如何让IntelliJ调试器允许我的应用程序的关闭挂钩运行?

时间:2014-07-09 17:41:13

标签: java debugging intellij-idea shutdown-hook intellij-13

在IntelliJ中调试注册关闭挂钩的应用程序时,如果我单击绿色"重启"则不会调用关闭挂钩。圆形箭头按钮,也不是我点击红色方块"停止"按钮。在这两种情况下,似乎都会立即强制终止调试后应用程序。

(请注意,这不是How do I stop a processing running in intelliJ such that it calls the shutdown hooks?

的副本

当我"手动"从Mac终端向调试器进程发送INT信号,然后我的关闭挂钩按预期运行。但是我还没有能够在IDE中发现任何引起所需行为的配置设置或控件。

1 个答案:

答案 0 :(得分:13)

请查看JetBrains bugtracker中的corresponding issue

我刚刚在Idea 14.0.2上测试过 - 停止按钮正常工作,以便执行关闭挂钩。

不幸的是,当您使用“停止”按钮时,不能在关闭钩子主体中使用断点:这些断点会被忽略。

如果您需要调试关闭钩子代码(即在断点处停止),您可以通过从终端调用命令来优雅地关闭在IDEA调试中运行的应用程序:

kill -INT <pid>

其中pid是您的应用程序的进程ID,可以找到,例如通过以下命令:

ps ax | grep java | grep <MainClassNameYouRun>

在这种情况下,IDEA将在关闭钩子中停止断点。