检测终止的挂起应用程序

Posted

技术标签:

【中文标题】检测终止的挂起应用程序【英文标题】:Detect terminated hung application 【发布时间】:2009-03-19 17:21:24 【问题描述】:

我创建了一个运行和调试进程的最小调试循环。

当进程挂起并且用户尝试关闭它时,Windows 会为消息框提供等待或立即结束选项。我想尝试检测它们何时结束,以便我的调试器可以收集相关信息。但是我似乎无法弄清楚如何检测这种情况。线程和进程退出代码保持在 0。有一次我以为它们返回 0xCFFFFFFF,但这种情况不再发生。

或者,也许可以修改一些注册表项以在应用程序关闭后运行此调试器,例如 Dr. Watson。也许这只是我的机器,但我似乎无法在关闭挂起的应用程序时启动调试器(VS JIT 调试、Dr. Watson 等)。

我知道这一定是可能的,因为我以前见过 HUNGAPP 转储。

感谢您提供任何信息!

【问题讨论】:

【参考方案1】:

有一个关于该主题的msdn blog series,它描述了 Windows 如何处理崩溃。

【讨论】:

【参考方案2】:

您可以使用 WinDbg 为相同目的运行您的应用程序,当应用程序挂起时,它会为您生成转储文件。

【讨论】:

以上是关于检测终止的挂起应用程序的主要内容,如果未能解决你的问题,请参考以下文章

如何正确终止 dll 中的挂起线程?

七. 多线程编程11.线程的挂起恢复和终止

linux进程的挂起和恢复

closesocket() 未完成 IOCP 的挂起操作

Linux中线程的挂起与恢复(进程暂停)

Kotlin 协程协程的挂起和恢复 ① ( 协程的挂起和恢复概念 | 协程的 suspend 挂起函数 )