我想强制当前执行行到同一函数中的特定行,可能会跳过中间行。我所有的旧学校调试器都有这个功能,但我在eclipse中找不到它。有没有办法在不改变代码的情况下做到这一点?
答案 0 :(得分:14)
前两个答案似乎错过了这个主题,除非是我不理解这个问题。
我的理解是,我自己搜索的一个功能是,你想跳过多行(当踩代码时)并将程序计数器(以汇编词汇表)设置为给定的行。跳过一些昂贵的对象创建,看到一些错误情况等等可能会很有趣。我曾经在Visual Studio(C或C ++代码)中这样做。
我没有在Eclipse中找到它,也没有在NetBean中找到它。它可能是JVM的限制,也可能是某些策略的执行......
Run to line 命令当然执行当前执行位置和指定位置之间的所有行。
答案 1 :(得分:11)
我也一直在寻找这个功能,而“Run to line”也不是一回事。
这可能是JVM的限制。 Java没有实现goto,尽管它确实有 jump 语句,比如break和continue。然而,那些是块级。如果这是JVM限制,我的猜测是它更可能是由于安全架构。严密控制程序计数器对于闯入者来说是非常糟糕的,比如病毒 - 以及令人遗憾的调试者。
答案 2 :(得分:2)
我认为在Java中这是不可能的。允许您“后退”的唯一功能是使用“drop to frame”,它会将您带回到当前帧的第一条指令。至少我没有看到任何具有此特定功能的调试器,但我无法在网上找到它为什么会这样......
我知道Visual C中的调试器允许更改为指针。我会继续搜索,也许至少我们会知道为什么会这样,但它似乎是某种设计限制。
答案 3 :(得分:0)
功能请求说不可能
在https://bugs.eclipse.org/bugs/show_bug.cgi?id=287795中(信用to Amitd )Darin Wright表示它是底层Java调试器的限制:
目前,Java调试器无法做到这一点,因为本机调试接口无法随意移动/设置程序计数器。
C / C ++
然而,CDT支持它(在Neon上测试,Ubuntu 14.04)。右键单击要转到的行,然后选择:这也进一步证明存在潜在的Java限制,因为Java在Eclipse中往往功能更丰富,并且这些菜单条目在“Run to line”(不跳过执行)旁边不存在于Java中()。
如果您跳过i = 1
行
#include <stdio.h>
int main(void) {
int i;
i = 0; /* Break here. */
i = 1;
printf("%d\n", i); /* Jump to here. */
}
答案 4 :(得分:-5)
“Run to line”似乎需要程序运行并处于暂停状态才能使用。另一个选项是在调试模式下运行时为该行设置断点。
至少,这是在Eclipse 3.3.2中。