在Eclipse中使用Java 8年后,我转向了IntelliJ Idea。想象一下我所经历的“文化冲击”,呵呵,不管怎样,有一件事我真的很想念,不确定IntelliJ是否支持它:在断点期间轻松编辑Java代码。
简而言之,在Eclipse中,如果我编辑断点下面的一行代码并保存更改,它将在程序执行期间自动应用。如果我编辑断点上方的代码行(已经执行),Eclipse调试器会将“运行光标”移动到我更改了其代码的函数的开头,并从那里继续运行,包括我刚刚添加的更改。
我知道在IntelliJ中有一个选项可以构建模块并批准代码的“热插拔”,但我正在工作的项目非常庞大,构建需要大约2分钟,有时在调查时,我需要在调试时进行一些更改和调整。
IntelliJ是否有一个选项或插件可以自动应用断点以下的更改,或者在断点之前进行更改时重新执行函数?
2条答案
按热度按时间fiei3ece1#
HotSwap是possible,但有一些限制。
或者,您可以使用动态代码演化VM(DCEVM),它对在运行时重新加载类提供无限支持。有可用的插件来实现它。
JRebel(付费)
Hotswap Agent(免费)
jucafojl2#
在调试应用程序时,如果重新编译了加载的类,IntelliJ将要求热重新加载它们。这也适用于GNU+Linux;我从来没有对这个问题有过意见。
如果代码已经被执行(例如你的断点在一个方法的中间),你可以在“Frames”视图中右击顶部的框架,然后选择“Drop frame”。这将展开堆栈,您可以再次输入函数。参见https://www.jetbrains.com/help/idea/debug-tool-window.html或When using the Java debugger in IntelliJ, what does "Drop Frame" mean?
请注意,由第一个方法执行引起的任何副作用(打印语句,修改外部集合等)都不会被回滚。