在Eclipse中调试Java时移动指令指针

时间:2009-10-30 17:58:06

标签: java eclipse debugging

在Eclipse(Galileo)中调试Java程序时,我可以将指令指针直接移动到我选择的行(在当前方法中)吗?

将指令指针拖到Visual Studio中方法中的所需行是很简单的,但我没有看到在Eclipse中执行此操作的方法(并且在文档或google上找不到任何关于它的内容)

10 个答案:

答案 0 :(得分:30)

这是可能的......

http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.jdt.doc.user/tips/jdt_tips.html

  

Drop to frame - 当您单步执行代码时,您可能偶尔会走得太远,或者跨过您打算进入的行。   您可以使用Drop to而不是重新启动调试会话   帧动作可以快速返回到方法的开头。选择   对应于您要重启的Java方法的堆栈帧,   从Debug视图工具栏或堆栈框架中选择Drop to Frame   上下文菜单。当前指令指针将被重置为   方法中的第一个可执行语句。这适用于非顶层堆栈   框架也是如此。

     

请注意,Drop to frame仅在使用1.4或1.4进行调试时可用   更高的VM或J9 VM。在某些情况下,JVM可能存在   无法从堆栈中弹出所需的帧。例如,它是   通常不可能掉到堆栈的底部框架或   本机方法下面的任何框架。

答案 1 :(得分:15)

这是不可能的。

如果您只想在当前位置执行某些代码,可以使用Expressions视图并输入代码作为表达式。表达式求值调用的方法将在当前的调试上下文中运行。

答案 2 :(得分:1)

无法像在Visual Studio中那样移动指针,但解决方法是:

返回到当前执行方法的开头: 从调试调用堆栈中选择方法,右键单击 - > "掉到框架" 等你在方法的开头回来了。

现在到达你想要的一行,点击它来选择该行并点击ctrl + r或右击该行并选择" Run to line"。

这些技术非常有用,可以大量减少调试工作,享受!

答案 3 :(得分:0)

我最喜欢ankon的答案,但另一个选项(仅适用于您的特定实例 - 如果是这样)是停在if的断点处并修改条件中评估的变量这样它返回false(从“变量”视图中,右键单击变量并单击“更改值...”)

答案 4 :(得分:0)

我认为这在旧版eclipse中是完全可能的,我以为我有记忆这样做,但我想我只是在Visual Studio中工作时植入了那个内存。从我正在阅读的内容来看,它可能会出现在jvm而不是eclipse本身,有些页面表明jvm无法处理它。

在我看来,Eclipse比VS好很多倍,我在两者中都做了很多工作,因为我发现Eclipse,当我不得不在VS工作时,我总是很痛苦。但是没有这个功能现在肯定会受到伤害。

答案 5 :(得分:0)

您可以直接跳转到当前调试方法内的任何其他方法调用。在当前指令指针下面选择一些方法调用,并使用上下文菜单中的“Step into selection”。

答案 6 :(得分:0)

遗憾的是无法使用指令指针(程序计数器)前进,所以你需要做的是引入你自己可以测试的“调试”变量 - 假设你想要绕过一个循环太长了,然后添加一个变量并测试其增加的值,然后将循环封装在带有该变量的if中。我知道这很难看,但它完成了 - 或者你可以用C ++开发:-)

答案 7 :(得分:0)

我使用的一个技巧是在你的类中键入一个空格,安全的地方,如注释行;立即删除它并保存该类。这会强制执行点跳转到当前方法的开头。我承认,这并不理想,但它有时可以作为一种解决方法来实现您的目标。

虽然在eclipse的默认安装中不可能像在Visual Studio中那样直接移动执行点,但可能存在一个eclipse插件,可以在某处提供该功能。搜索一下。

答案 8 :(得分:-2)

只需右键单击所需的行,然后选择run to line。那就是......

答案 9 :(得分:-3)

将光标放在您选择的行上,然后点击ctrl-R(“Run to line”)或右键单击并从上下文菜单中选择“Run to line”。