【问题标题】:During debugging in Eclipse, is it possible to jump to a line and execute it during debugging?在Eclipse中调试时,是否可以在调试时跳到一行执行?
【发布时间】:2012-02-11 20:23:25
【问题描述】:

在 Visual Studio 中,可以在调试会话期间跳转到光标选择的行并执行该行。跳转到该行后,您可以从已跳转到的行继续调试。 Java/Eclipse 世界中是否存在此功能?

例如:

foo1();

foo2();

foo3();

返回真;

在 Visual Studio 中,可以在 foo1() 上中断,将光标放在 foo3() 上,执行 foo3() 而不执行 foo2。此外,当调试器在“返回真”时停止时,我可以将光标放在 foo1 上,然后再次执行 foo1。此外,我还可以通过这些动作继续执行任意行代码。

【问题讨论】:

  • 此功能似乎不存在。 stackoverflow.com/questions/4864917/…
  • 有趣。如果你告诉它向前跳到一行,而跳过的行声明了你跳转到的行所使用的变量,会发生什么?
  • 如果它是一个值类,该变量将在范围内但将具有默认值。如果是引用类型,则初始化为null。
  • 从 .NET 运行时的角度来看,这非常有意义,因为托管堆栈空间是从方法开始时保留的。 (这些变量是从方法的开头声明的,它们都只是设置为default(T))。 -- JVM 做同样的事情,所以它没有理由不能这样做。 - 似乎是由于缺乏工具。 -- 我想 Eclipse 是免费的,而且物有所值。 ;-)
  • 2015 年,Eclipse 调试仍然没有改进。真可惜……

标签: java eclipse debugging


【解决方案1】:

是的。在该行下一个断点,按F8,等待程序执行到这一行,按F6进入下一行,或者按F5进入当前行。

编辑:

一旦线程在调试器中暂停,您还可以选择一些可运行的代码,右键单击,然后选择“显示”(Ctll-Shift-D)或“执行”(Ctrl-U)。您还可以使用显示视图来键入任何语句、选择它并执行或显示它。

【讨论】:

  • 这是一个有用的响应,因为它记录了 Eclipse IDE 的一些有趣特性。但是,它不像 Visual Studio IDE。目前,这个问题的答案是“不,这个功能似乎不存在”。
  • 是的,我已经按照您的描述尝试过。如果变量被定义为要执行的行的一部分,那么 Eclipse 就不是用户友好的。考虑: int startHere = 0;我的班级我 = 新的我的班级();富(我); foo2(我);如果您在第一行中断并执行第三行,Eclipse 会抱怨我未定义。此外,箭头还没有移动到第 3 行,它仍然指向第 1 行。虽然您已经设法执行第 3 行,但执行并没有跳到第 3 行,虽然您可以继续突出显示行并执行后面的行,但经验很笨重。
  • 我不想执行第 2 行。另请参阅确认我怀疑的附加链接。 stackoverflow.com/questions/4864917/…
  • 啊,好的。现在我明白了。不过,您可以在调试时删除第 2 行,然后再转到第 3 行。位它确实需要修改源。
  • @JBNizet 你不能总是修改代码,即使那样答案也不是很有帮助——在这种情况下你如何退后一步? :-|
【解决方案2】:

单击要运行的行并按 Ctrl+R,它将运行到该行,而不是放置大量断点。您也可以使用 F8 运行到下一个断点或 F6 运行到下一行。

【讨论】:

  • 这不是答案。 Ctrl+R 是“Run to line”的快捷方式,它也将执行 foo2(),因此与 OP 的要求相矛盾,即“在不执行 foo2 的情况下执行 foo3()”
【解决方案3】:

您可以使用 Eclipse 的“drop to frame”功能向后跳转到函数的顶部。右键单击堆栈顶部的函数。

您不能跳过foo2(),但您可以编辑变量以撤消它产生的任何影响。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 2015-03-26
    • 1970-01-01
    相关资源
    最近更新 更多