在执行的内容方面我看不出任何功能上的错误,但是我浪费了一个小时证明我的代码并且编译器正在做他们应该做的事情.
考虑以下代码:
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;
}
Run Code Online (Sandbox Code Playgroud)
叫着
int theAnswer = getAnswer(6);
Run Code Online (Sandbox Code Playgroud)
断点包含return和运行代码之前的两行,尝试预测结果,从而命中哪一行.
正如您可能从我的问题的基调中想象的那样,突出显示错误的行,但返回了正确的结果.如果您单步执行代码,它会在很多方面跳舞.
有没有可以配置不同的东西,以便显示正确的行?(我正在使用最新的Android Studio,我很欣赏它可能不稳定,但我确信我曾经在Eclipse上看过类似的行为,但我从来没有花时间跟踪它;也许它是一个java的东西) .
我正在尝试调试在后台使用JMS的Web服务调用.我让JBoss在调试模式下运行.当我在Eclipse中按F6(执行当前行)时,会跳过某些行.我有这个方法:
@Override
public void log(MsgPayload payload) {
1 Date startTime = new Date();
logger.info("Publishing with BufferedPublisher.java start time:"+startTime);
3 publisher.send(payload);
Date endTime = new Date();
logger.info("Publishing with BufferedPublisher.java end time:"+endTime);
long mills = endTime.getTime()-endTime.getTime();
double secs = mills/1000.0;
logger.info("Publishing with BufferedPublisher.java total time (seconds):"+secs);
}
Run Code Online (Sandbox Code Playgroud)
那会发生什么?我在第1行有断点.当我按下F6时,它会跳过该行并转到第3行.当我再次按F6时,它会进入方法的结尾.一半的代码永远不会被执行.. ??? 我的问题是为什么.我假设我的源代码没有很好地附加到正在执行的实际代码.但我该如何更改它?
谢谢.