他究竟如何调试这样的正在运行的应用程序,更重要的是,我怎么能这样做?

时间:2014-06-03 07:00:00

标签: java eclipse debugging remote-debugging

"!Debugception"

您可能会注意到,在第一个15 seconds of this YouTube video (from 1:01:01 to 1:01:16)内,Markus Persson(又名" Notch",Minecraft的创建者)以某种方式设法保存/更新应用程序并为其附加调试器虽然它已经在被调试的过程中,据说所有人都有一个简单的键盘快捷键。以前编码的应用程序神奇地变成了新编辑的应用程序,看似 没有 重新启动它或产生一个新进程...这可能只是一些本地远程调试的形式,但它的某些内容似乎并不合适。

我花了好几天谷歌搜索并询问他是如何做到这一点的,但无济于事。我在Eclipse首选项下找不到这样的选项,每当我尝试保存&调试一个已经运行的应用程序,它只是启动一个新更新的应用程序的单独实例,与旧的,过时的应用程序并排。

我错过了什么吗?这怎么可能?
他怎么能够利用如此惊人的,强大的调试功能呢? 提前谢谢!

更新

好的,所以这似乎是Eclipse特有的标准功能 来自NetBeans和Visual Studio的背景,我很惊讶这似乎并不存在于其他地方(或者至少在NetBeans中!)......

1 个答案:

答案 0 :(得分:6)

这是Eclipse的内置功能。如果在程序以调试模式运行时编辑方法,它将编译新方法,并将旧方法替换为新版本。如果某个线程已经在运行该方法,它将跳回到开头(AFAIK;这可能只在程序暂停时发生)。

您无需重新启动该程序或设置任何特殊首选项。只需编辑并保存,就会发生魔力。

Eclipse无法总是弄清楚如何将更改合并到正在运行的程序中 - 通常是在方法体外更改了任何内容(包括方法的参数或返回类型)。在这种情况下,您将看到一个警告对话框,其中包含停止程序,重新启动程序或忽略更改的选项。