gpt4 book ai didi

java - Android Studio 调试器突出显示错误行

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:14:59 27 4
gpt4 key购买 nike

就执行的内容而言,我看不出有任何功能上的错误,但我只是浪费了一个小时来证明我的代码和编译器正在做他们应该做的事情。

考虑这段代码:

public int getAnswer(int a) {

int retval = 18;

int x = 25;
int y = 50;

while (a-- > 0) {
if (a == 3) {
retval = a;
return retval;
}
}

x = 10;
y = 20;

return 0;
}

调用

int theAnswer = getAnswer(6);

在包含 return 的两行都设置断点,在运行代码之前,尝试预测结果,然后预测哪一行会被命中。

正如您从我的问题语气中想象的那样,错误的行被突出显示,但返回了正确的结果。如果您单步执行代码,它会跳动很多。

有什么可以不同地配置以显示正确的行吗? (我使用的是最新的 Android Studio,我很欣赏它可能不稳定,但我确信我之前在 Eclipse 上看到过类似的行为,但我从来没有花时间去追踪它;也许这是一个 java 的东西) .

最佳答案

这是 dx 的一个问题,dx 是将 Java .class 文件转换为 .dx 文件以打包到 Android 中的构建的一部分。据此:

https://code.google.com/p/android/issues/detail?id=34193

如果一个函数有多个返回路径,dx 会将返回指令合并为一条返回指令,因此在调试过程中,调试器无法分辨返回属于哪一行,事情就会跳来跳去。这对应于我在尝试重现您的问题时看到的情况:每次通过循环它都会执行 if (a == 3) 检查,跳转到 return 0最后,然后跳回循环。您会看到最后一个 return 0 在循环中间与 return retval 合并。

我怀疑这会很快得到解决,所以您可能只需要学会忍受它。抱歉,我知道这有点疯狂。

关于java - Android Studio 调试器突出显示错误行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36605688/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com