如何在eclipse java调试器中设置当前执行行?

时间:2008-10-10 13:37:26

标签: eclipse debugging execution

我想强制当前执行行到同一函数中的特定行,可能会跳过中间行。我所有的旧学校调试器都有这个功能,但我在eclipse中找不到它。有没有办法在不改变代码的情况下做到这一点?

5 个答案:

答案 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

,此测试程序将打印0
#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”似乎需要程序运行并处于暂停状态才能使用。另一个选项是在调试模式下运行时为该行设置断点。

  1. 在同一行的源窗格中双击左下垂直条以添加断点;或者,
  2. 选择该行并转到“运行”&gt;切换断点。
  3. 至少,这是在Eclipse 3.3.2中。