【问题标题】:How can I set the current line of execution in the eclipse java debugger?如何在 eclipse java 调试器中设置当前执行行?
【发布时间】:2010-09-16 12:27:48
【问题描述】:

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

【问题讨论】:

  • 寻找类似于 Visual Studio 的“设置下一条语句”的功能,但适用于 java/eclipse:msdn.microsoft.com/en-us/library/09yze4a9.aspx
  • 在 Eclipse 错误bugs.eclipse.org/bugs/show_bug.cgi?id=287795 中存在错误(或可能存在)功能请求
  • 正如 +PhiLho 指出的那样,如果您要执行的行在前面,则一定要“运行到行”。但是,如果您已经过了这条线,那么您可以“丢帧”被带到函数调用的开头。然后你像以前一样“奔跑”。

标签: eclipse debugging execution


【解决方案1】:

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

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

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

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

【讨论】:

  • 对于那些仍在寻找答案的人,这是 JVM 限制。有人报告了herehere,两次都被立即忽略了。
【解决方案2】:

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

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

【讨论】:

  • 是的,这就是 Eclipse 团队所说的......我链接了一个显示对话的 Eclipse 链接......
【解决方案3】:

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

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

【讨论】:

    【解决方案4】:

    功能请求说不可能

    https://bugs.eclipse.org/bugs/show_bug.cgi?id=287795credits to AmitdDarin Wright 表示这是底层 Java 调试器的限制:

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

    C/C++

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

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

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

    如果你跳行i = 1,这个测试程序会打印0:

    #include <stdio.h>
    
    int main(void) {
        int i;
        i = 0; /* Break here. */
        i = 1;
        printf("%d\n", i); /* Jump to here. */
    }
    

    【讨论】:

      【解决方案5】:

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

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

      至少,这是在 Eclipse 3.3.2 中。

      【讨论】:

      • -1 Run to line 与改变程序的执行无关。
      猜你喜欢
      • 2011-10-26
      • 2011-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-17
      相关资源
      最近更新 更多