WinDbg 的 PRIMARY_PROBLEM_CLASS STACKIMMUNE 是什么意思?

发布于 2025-01-01 10:57:58 字数 294 浏览 4 评论 0原文

一般来说,我找不到 !analyze -v 命令的 WinDbg 输出中不同字段可以包含的值的含义列表。

搜索很困难,因为命令的输出经常在没有明确解决字段值(例如 DEFAULT_BUCKET_ID 和 PRIMARY_PROBLEM_CLASS 的字段值)的情况下发布。有参考清单吗?

更具体地说:在内存转储分析期间,!analyze -v 命令的输出表明 DEFAULT_BUCKET_ID 和 PRIMARY_PROBLEM_CLASS 均为“STACKIMMUNE”。这意味着什么?

In general I cannot find a listing of the meaning of the values that the different fields in WinDbg's output of the !analyze -v command can contain.

Searching is difficult due to the fact that the output of the command is often posted without the field values (like that of DEFAULT_BUCKET_ID and PRIMARY_PROBLEM_CLASS) explicitly being addressed. Is there a reference list?

To be more specific: During the analysis of a memory dump, the output of the !analyze -v command indicated that both DEFAULT_BUCKET_ID and PRIMARY_PROBLEM_CLASS are "STACKIMMUNE". What does this mean?

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

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

发布评论

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

评论(1

方圜几里 2025-01-08 10:57:58

首先简单介绍一下 !analyze 的工作原理。

!analyze尝试确定访问冲突的原因时(以及一些其他类型的异常,例如 SEH 异常、C++ 异常、整数溢出、除以零等),它会查看引发异常的线程的调用堆栈并找出最上面的内容线程。然而,并非所有堆栈帧都有用。

例如,对于 C++ 异常,您将在堆栈顶部看到 kernel32!RaiseExceptionyour_module!__ except_handler3。必须跳过这些帧,因为它们不太可能是问题的原因。有时 !analyze 必须跳过很多帧才能到达感兴趣的帧。只需查看其他堆栈溢出问题的示例,其中有问题的代码低于约 40 帧。

回答您的问题:STACKIMMUNE 表示调用堆栈中的所有帧都被跳过。当堆栈损坏或符号错误并使用 !reload /i 忽略任何不匹配错误时,可能会发生这种情况,并且可能在许多其他情况下发生。

First a small introduction to how !analyze works.

When !analyze tries to determine the reason for an access violation (and some other types of exceptions, for example, SEH exceptions, C++ exceptions, integer overflow, division by zero, etc.), it looks at the call stack of the thread that threw the exception and figures out what is on the top of the thread. However, not all stack frames are useful.

For example, for C++ exceptions you will see kernel32!RaiseException and your_module!__except_handler3 at the top of the stack. Those frames must be skipped, because they are very unlikely the cause of the problem. Sometimes !analyze has to skip lots of frames to get to the interesting frame. Just look at an example on other Stack Overflow question, where the offending code is ~40 frames below.

To answer your question: STACKIMMUNE is an indication that all frames in the call stack are skipped. This could happen when the stack is corrupted or when you have wrong symbols and used !reload /i to ignore any mismatch errors, and probably in many other cases.

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