调试器断点命中文件中的同一行,但在使用 lambda 时具有不同的构建变体

Debugger breakpoint hitting on the same line in file but of the different build variant while using lambdas

提问人:Muhammad Muzammil 提问时间:10/23/2019 最后编辑:Muhammad Muzammil 更新时间:4/21/2023 访问量:441

问:

我们的项目中有许多不同的构建、风格和尺寸。但是在更新到 Android Studio 3.5 后,我们注意到一个奇怪的行为,即当我们在多个构建变体中存在的文件的某些 lambda 中创建断点时,调试器无法正常工作,并且被击中在不同构建变体的文件(同名和包)中。有趣的是,只有当断点设置为在 lambda 的主体中触发并且工作正常时,才会发生整个问题

因此,总而言之,要重现此问题,您必须:

  1. 在每个变种中创建两个变种和一个同名的文件
  2. 创建一个代码,在两种风格中的某些行中包含 lambdaX

现在只有两件事中的一件会发生,但不会同时发生:

  • 当您在风格 A 中并在 line 上创建一个触发器时,它将在同一行中断,但在风格 B 的文件中X
  • 当您在风格 B 中并在 line 上创建一个触发器时,它将在同一行中断,但在 flavor A 的文件中X

以下是我们尝试重现该问题时的一些屏幕截图:

ActualFlavor 的 AuthRepository(活动构建变体):enter image description here

DummyFlavor 的 AuthRepository:enter image description here

所以问题是我们做错了什么?或者现在这真的是 Android Studio 中的一个问题?

Android Studio 版本 = 3.5,kotlin 版本 = 1.3.50,build:gradle 版本 = 3.5.1

android-studio 调试 intellij-idea kotlin

评论

1赞 Enselic 10/31/2019
听起来像一个错误,我建议你报告它:developer.android.com/studio/report-bugs
0赞 GensaGames 11/1/2019
@Enselic 信息太少,无法将其视为错误。@Muhammad请在 期间显示构建配置。run
1赞 Muhammad Muzammil 11/5/2019
@Enselic 已报道: issuetracker.google.com/issues/143160964
0赞 binarynoise 6/18/2022
我有一个类似的问题,当在 logcat 中单击带有行号的文件时,如果它存在于多个模块中,它会转到错误的文件

答:

0赞 Alexey Vetrov 4/21/2023 #1

我在 IntelliJ IDEA 和 Kotlin 1.8.0 中看到了相同的行为。 我发现了一些肮脏的解决方法:我在 lambda 主体中添加了一些镇流器代码行,例如 .在那之后,断点起作用了。println("smth")

我认为这是一个 Kotlin 调试器错误,而不是 AndroidStudio。