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

发布于 2025-01-03 05:51:02 字数 110 浏览 6 评论 0原文

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

My outlook addin application is hung and windbg hang dump analysis shows all threads are in suspended/unfrozen state. The errors in the event viewer and process monitor shows hundreds of registry lookup failures and disk access failures. What does the threads' suspended/unfrozen state mean?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

紫罗兰の梦幻 2025-01-10 05:51:02

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

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

挂起的线程有一个挂起计数,因此当计数变为 0 时,会在适当的情况下恢复该线程的执行,大于 0 时将挂起该线程。

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

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

希望这有帮助。

The F1 help from WinDBG explains the following in greater detail if you look for 'Controlling Processes and Threads' link from '~ (Thread Status) command' under Index tab.
Also there is a MSDN link.

So firstly freezing has no meaning unless you have a debugger attached so only a debugger can freeze or unfreeze a thread.

Suspended threads have a suspend count such that when the count goes to 0 resumes execution for that thread if appropriate, higher than 0 will suspend the thread.

Typically when you attach the debugger then it will increase the suspend count for each thread by 1 as you are invasively debugging the application or you have hit a breakpoint.

So frozen/unfrozen state only has meaning when you have the debugger attached and have hit a breakpoint, suspended/unsuspended is the suspend count for each thread when your application is running.

Hope this helps.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文