我的应用程序挂起,windbg 转储分析显示所有线程都处于挂起/解冻状态。这是啥意思?

Posted

技术标签:

【中文标题】我的应用程序挂起,windbg 转储分析显示所有线程都处于挂起/解冻状态。这是啥意思?【英文标题】:My application is hung and windbg dump analysis shows all threads are in suspended/unfrozen state. What does it mean?我的应用程序挂起,windbg 转储分析显示所有线程都处于挂起/解冻状态。这是什么意思? 【发布时间】:2012-02-08 14:03:56 【问题描述】:

我的 Outlook 插件应用程序挂起,windbg 挂起转储分析显示所有线程都处于挂起/解冻状态。事件查看器和进程监视器中的错误显示了数百个注册表查找失败和磁盘访问失败。线程的挂起/解冻状态是什么意思?

【问题讨论】:

【参考方案1】:

如果您从“索引”选项卡下的“~(线程状态)命令”中查找“控制进程和线程”链接,WinDBG 的 F1 帮助将更详细地解释以下内容。 还有一个MSDN link。

因此,除非您附加了调试器,否则首先冻结没有任何意义,因此只有调试器可以冻结或解冻线程。

挂起的线程有一个挂起计数,当计数变为 0 时,如果适当,该线程会恢复执行,大于 0 的线程将挂起。

通常,当您附加调试器时,它会将每个线程的挂起计数增加 1,因为您正在侵入性地调试应用程序或遇到断点。

因此,冻结/解冻状态仅在您连接了调试器并遇到断点时才有意义,挂起/未挂起是应用程序运行时每个线程的挂起计数。

希望这会有所帮助。

【讨论】:

只是想分享这个链接,因为这个答案和链接一起帮助了我:msdn.microsoft.com/en-us/library/windows/hardware/…

以上是关于我的应用程序挂起,windbg 转储分析显示所有线程都处于挂起/解冻状态。这是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 WinDbg 分析 VC++ 应用程序的故障转储?

如果我有一些符号警告,我可以使用 windbg 分析的结果吗?

如何分析windbg中的<unclassified>内存使用情况

无法读取 windbg 中的故障转储

Windbg 堆栈跟踪问题

分析 Asp.net 死锁故障转储