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

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

在 IntelliJ 中调试注册关闭 Hook 的应用程序时,如果我单击绿色的“重启”圆形箭头按钮或单击红色方 block “停止”按钮,则不会调用关闭 Hook 。在这两种情况下,正在调试的应用程序似乎立即被强制终止。

(注意这不是 How do I stop a processing running in intelliJ such that it calls the shutdown hooks? 的副本)

当我“手动”从 Mac 终端向调试器进程发送一个 INT 信号时,我的关闭 Hook 当然会按预期运行。但是我无法在 IDE 中发现任何引发所需行为的配置设置或控件。

最佳答案

请看corresponding issue在 JetBrains bugtracker 中。

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

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

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

kill -INT <pid>

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

ps ax | grep java | grep <MainClassNameYouRun>

在这种情况下,IDEA 将在关闭 Hook 中的断点处停止。

关于java - 如何让 IntelliJ 调试器允许我的应用程序的关闭 Hook 运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24660408/

相关文章:

java - 无法通过反射 setter 设置字段值

java - 遍历java中的对象属性

java - 创建 Java 类来接收 JSON 对象

javascript - JS 递归问题

java - 何时使用 @Contract ("null -> fail") 以及何时使用 @NotNull

java - 在android中等待并通知

Java - 如何在 Eclipse 中检查 'ThreadLocal' 变量的值?

intellij-idea - kotlin 未解析 KDoc 链接,但 IntelliJ 不喜欢修复它的导入

java - mvn test 的工作方式与 IntelliJ 中的工作方式不同

c - 调试Linux进程挂起,它正在运行哪些代码?