使用lambda时,调试器断点命中文件中的同一行,但生成版本不同

Muh*_*mil 9 debugging intellij-idea kotlin android-studio

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

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

  1. 创建两个版本,并在每个版本中创建一个具有相同名称的文件
  2. 创建包含X两种口味的某行上包含lambda的代码

现在,只会发生以下两种情况之一,但不会同时发生:

  • 当您使用风味A并在行上创建触发器时X,它将在同一行上中断,但在风味B的文件中
  • 当您处于风味B中并在行上创建触发器时X,它将在同一行中断,但在风味A文件中

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

ActualFlavor的AuthRepository(活动内部版本): 在此处输入图片说明

DummyFlavor的AuthRepository: 在此处输入图片说明

所以问题是我们在做什么错?还是现在真的是Android Studio中的问题?

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

小智 0

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

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