调试时更改java程序的执行

在Visual Studio中,在调试时,您可以通过堆栈返回来更改程序的执行流程。 我的意思是,在您传递一些表达式并且调试器突出显示下一行之后,您可以返回并再次执行该表达式。

调试Java程序时这可能吗?

是的,你可以使用Drop To frame 。

它位于主工具栏上,位于其他调试命令的左侧。

在评估调试器中的该部分后更改方法时,会出现一个提示:

堆栈上的过时方法

原因:虚拟机无法从调用堆栈中删除所有运行旧代码的堆栈帧。 虚拟机未向调试器提供这些帧的有效数据。 步入这些过时的帧可能对目标虚拟机有害。

然后有三个按钮:继续,终止和重新启动。

如果按“重新启动”,代码将重新评估并返回到新的断点(如果设置了一个断点)或之前的位置。 我不相信eclipse调试器中有“后退”。

我所知道的只有一种方法可以引导你达到这种效果。 它需要修改源代码,例如:

public static void main(String[] args) { int a = 1; int b = 1; int c = 1; //<-- break point here int d = 1; } 

设置一个断点,当调试器在该行停止时,将此main方法的源代码更改为其他任何东西,例如:

 public static void main(String[] args) { int a = 1; int b = 1; int c = 1; //<-- break point here int d = 1; int e = 1; //<-- any modification will do } 

现在,当按“下一步”时,您可以选择让调试器重新启动。

除了这种解决方法,我认为你不能在Eclipse中做到这一点。