33

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

4

5 回答 5

14

前两个答案似乎错过了这个话题,除非是我不理解这个问题。

我的理解是,我自己搜索的一个功能是,您想跳过多行(在单步执行代码时)并将程序计数器(以获取汇编词汇表)设置为给定的行。跳过一些代价高昂的对象创建、查看一些错误情况等可能会很有趣。我曾经在 Visual Studio(C 或 C++ 代码)中这样做。

我在 Eclipse 和 NetBean 中都没有找到。这可能是 JVM 的限制,或者是某些策略的执行......

Run to line命令当然会执行当前执行位置和指定位置之间的所有行。

于 2008-10-10T15:18:03.560 回答
11

我也一直在寻找这个功能,和“跑到线”不是一回事。

这很可能是 JVM 的限制。Java 没有实现 goto,尽管它有跳转语句,比如 break 和 continue。然而,这些是在块级别。如果这是 JVM 限制,我的猜测是更有可能是由于安全架构。对程序计数器的严格控制使入侵者(如病毒)变得虚弱,而且可悲的是调试器。

于 2008-10-14T00:55:20.197 回答
2

我认为这在 Java 中是不可能的。唯一允许您“后退”的功能是使用“drop to frame”,它会将您带回到当前帧的第一条指令。至少我还没有看到任何具有此特定功能的调试器,但我无法在网上找到为什么会这样......

我知道 Visual C 中的调试器允许更改为指针。我会继续寻找,也许至少我们会知道为什么会这样,但这似乎是某种设计限制。

于 2008-10-13T11:04:39.670 回答
0

功能请求说这是不可能的

https://bugs.eclipse.org/bugs/show_bug.cgi?id=287795感谢 Amitd中, Darin Wright说这是底层 Java 调试器的限制:

目前,Java 调试器无法做到这一点,因为本机调试接口不提供任意移动/设置程序计数器的能力。

C / C++

然而,CDT 支持它(在 Neon、Ubuntu 14.04 上测试)。右键单击要转到的行,然后选择:

  • “移动到行”:跳到行并在那里中断
  • "Resume at line":跳转到该行并从那里继续执行

这也进一步证明了 Java 存在潜在的限制,因为 Java 往往在 Eclipse 中功能更丰富,并且这些菜单条目在 Java 中不存在于“Run to line”旁边(它不会跳过行的执行) .

如果您跳行,此测试程序将打印 0 i = 1

#include <stdio.h>

int main(void) {
    int i;
    i = 0; /* Break here. */
    i = 1;
    printf("%d\n", i); /* Jump to here. */
}
于 2017-03-09T07:44:50.227 回答
-5

“运行到行”似乎需要程序正在运行并处于暂停状态才能使用。另一个选项是在调试模式下运行时为该行设置断点。

  1. 在同一行的源窗格中双击最左侧的垂直条以添加断点;或者,
  2. 选择该行并转到 Run > Toggle Breakpoint。

至少,这是在 Eclipse 3.3.2 中。

于 2008-10-10T13:50:48.633 回答