在IntelliJ中调试注册关闭挂钩的应用程序时,如果我单击绿色"重启"则不会调用关闭挂钩。圆形箭头按钮,也不是我点击红色方块"停止"按钮。在这两种情况下,似乎都会立即强制终止调试后应用程序。
(请注意,这不是How do I stop a processing running in intelliJ such that it calls the shutdown hooks?)
的副本当我"手动"从Mac终端向调试器进程发送INT信号,然后我的关闭挂钩按预期运行。但是我还没有能够在IDE中发现任何引起所需行为的配置设置或控件。
答案 0 :(得分:13)
请查看JetBrains bugtracker中的corresponding issue。
我刚刚在Idea 14.0.2上测试过 - 停止按钮正常工作,以便执行关闭挂钩。
不幸的是,当您使用“停止”按钮时,不能在关闭钩子主体中使用断点:这些断点会被忽略。
如果您需要调试关闭钩子代码(即在断点处停止),您可以通过从终端调用命令来优雅地关闭在IDEA调试中运行的应用程序:
kill -INT <pid>
其中pid
是您的应用程序的进程ID,可以找到,例如通过以下命令:
ps ax | grep java | grep <MainClassNameYouRun>
在这种情况下,IDEA将在关闭钩子中停止断点。