在 STS (Eclipse) 中调试 Spring 代码
Debugging Spring Code in STS (Eclipse)
我习惯在 Netbeans 中工作,在那里我可以在调试模式下启动一个项目,更改一些代码,然后点击 "Apply Code changes" 按钮。
目前我正在使用 Eclipse(Spring Tools Suite)工作,我想做一些类似的事情。
我发现 This article 这表明如果设置了 Project -> Build automatically,Eclipse 会自动执行此操作,但这不是我的经验。 (关于 Spring 引导项目,这是我目前正在使用的项目)
非常感谢任何帮助。
在 Eclipse 中并结合 Spring Boot Devtools,您有两种选择来处理这种情况。
如果 JVM swap-in 代码的能力在您调试时发生变化而不丢失应用程序的状态。当您启用 "Build Automatically" 并在遇到断点后更改代码时,这在 Eclipse out-of-the-box 中有效。通常 JVM 会丢弃当前执行帧并在当前方法调用开始时继续执行。
但是:这仅适用于较小的代码更改(例如更改方法的实现)。 JVM 无法 hot-swapped 对源代码进行大多数更改。如果 IDE 尝试这样做,您将收到一条错误消息,表明这是不可能的,并询问您是要重新启动 JVM、停止它还是在不更改代码的情况下继续。这是 JVM 的限制,而不是 IDE.
的直接限制
另一种选择是使用 Spring Boot Devtools。一旦它们位于应用程序的 class 路径上并且您在项目的 class 路径上更改了 class(如果启用了 "Build Automatically",则会自动发生), Boot Devtools 将检测到这些更改并 re-start 自动启动应用程序。这不会导致 JVM 重新启动,只是它的启动应用程序部分。因此它比启动完整的 JVM 快得多。但是:您正在失去应用程序的状态。从调试的角度来看,这与重启应用程序一样,只是速度更快。但是当你坐在断点上并期望应用程序继续使用相同的堆栈框架时,你不能做什么。
还有其他工具,如 JRebel,允许将更复杂的代码更改 hot-swapped 到 运行 应用程序中,例如,还有用于 Eclipse 的插件来使用 JRebel,但那是另一个故事。
我习惯在 Netbeans 中工作,在那里我可以在调试模式下启动一个项目,更改一些代码,然后点击 "Apply Code changes" 按钮。
目前我正在使用 Eclipse(Spring Tools Suite)工作,我想做一些类似的事情。
我发现 This article 这表明如果设置了 Project -> Build automatically,Eclipse 会自动执行此操作,但这不是我的经验。 (关于 Spring 引导项目,这是我目前正在使用的项目)
非常感谢任何帮助。
在 Eclipse 中并结合 Spring Boot Devtools,您有两种选择来处理这种情况。
如果 JVM swap-in 代码的能力在您调试时发生变化而不丢失应用程序的状态。当您启用 "Build Automatically" 并在遇到断点后更改代码时,这在 Eclipse out-of-the-box 中有效。通常 JVM 会丢弃当前执行帧并在当前方法调用开始时继续执行。
但是:这仅适用于较小的代码更改(例如更改方法的实现)。 JVM 无法 hot-swapped 对源代码进行大多数更改。如果 IDE 尝试这样做,您将收到一条错误消息,表明这是不可能的,并询问您是要重新启动 JVM、停止它还是在不更改代码的情况下继续。这是 JVM 的限制,而不是 IDE.
的直接限制另一种选择是使用 Spring Boot Devtools。一旦它们位于应用程序的 class 路径上并且您在项目的 class 路径上更改了 class(如果启用了 "Build Automatically",则会自动发生), Boot Devtools 将检测到这些更改并 re-start 自动启动应用程序。这不会导致 JVM 重新启动,只是它的启动应用程序部分。因此它比启动完整的 JVM 快得多。但是:您正在失去应用程序的状态。从调试的角度来看,这与重启应用程序一样,只是速度更快。但是当你坐在断点上并期望应用程序继续使用相同的堆栈框架时,你不能做什么。
还有其他工具,如 JRebel,允许将更复杂的代码更改 hot-swapped 到 运行 应用程序中,例如,还有用于 Eclipse 的插件来使用 JRebel,但那是另一个故事。