在Eclipse中调试时,是否可以跳转到某一行并在调试过程中执行它?

16
在Visual Studio中,在调试会话期间,可以跳转到光标所选行并执行该行。跳转到该行后,您可以从跳转到的行继续调试。在Java/Eclipse世界中是否存在此功能?
例如:
foo1(); foo2(); foo3(); return true;
在Visual Studio中,可以在foo1()上中断,将光标放在foo3()上,执行foo3()而不执行foo2。此外,当调试器停在“return true”时,我可以将光标放在foo1上,再次执行foo1。此外,我可以通过这些操作继续执行任意行的代码。

3
这个功能似乎不存在。 - MedicineMan
有趣。如果您让它跳到一行并且被跳过的行声明了被跳转到的行使用的变量,会发生什么? - Laurence Gonsalves
1
如果它是值类型,则变量将在范围内但具有默认值。 如果是引用类型,则将初始化为null。 - MedicineMan
从.NET Runtime的角度来看,这是完全合理的,因为托管堆栈空间从方法开始时就被保留了。(这些变量从方法开始就被声明,它们都只设置为default(T))。-- JVM也是这样做的,所以没有理由它不能做到这一点。-- 似乎是由于工具的缺乏。-- 我想Eclipse是免费的,并且物有所值。;-) - BrainSlugs83
1
2015年了,Eclipse调试还是没有任何改进。真遗憾... - Thomas Weller
显示剩余2条评论
3个回答

5

点击您想要运行到的行,然后按下Ctrl+R,它将运行到该行而不是添加大量断点。另外,您可以使用F8运行到下一个断点或使用F6运行到下一行。


8
这不是一个答案。Ctrl+R是“运行到行”的快捷键,这也会执行foo2(),因此与OP的要求相矛盾,即“在不执行foo2()的情况下执行foo3()”。 - Thomas Weller

1

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

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


1
我来自C语言世界(使用Eclipse进行编程),可以做到@MedicineMan所说的。现在我正在使用Eclipse进行Java开发,但是这个功能似乎缺失了。我认为这与编译器的能力有关。既然这个功能不可用,那么这是下一个最好的选择。 - undefined

-2

是的。在该行上设置断点,按F8键,等待程序执行到此行,然后按F6键进入下一行,或按F5键进入当前行。

编辑:

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


7
这是一个有用的回答,因为它记录了 Eclipse IDE 的一些有趣特点。然而,它的行为与 Visual Studio IDE 不同。目前,对于这个问题的答案是“不,这个功能似乎不存在”。 - MedicineMan
1
是的,我按照您描述的方式尝试过了。如果变量作为要执行的行的一部分定义,Eclipse并不那么用户友好。请考虑以下代码: int startHere = 0; MyClass me = new MyClass(); foo(me); foo2(me); 如果您在第一行中断,并执行第三行,Eclipse会抱怨me未定义。此外,箭头没有移动到第三行,它仍然指向第1行。虽然您已经成功执行了第3行,但执行并没有跳转到第3行,虽然您可以继续突出显示后面的行并执行,但体验很笨重。 - MedicineMan
3
我不想执行第二行。另请参阅附加链接以确认我的怀疑。https://dev59.com/o2445IYBdhLWcg3wapzF - MedicineMan
1
啊,好的。现在我明白了。你可以在调试时删除第二行,然后跳到第三行。但确实需要修改源代码。 - JB Nizet
2
@JBNizet 你并不总是能修改代码,即使可以,这个答案也不是特别有帮助——在这种情况下如何向后调试? :-| - BrainSlugs83
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接