StackOverflow和进程关闭后的Windbg线程ID

时间:2009-06-24 19:42:22

标签: debugging windbg adplus

使用ADPlus(在故障转储模式下)生成.dmp文件。未处理异常的最后序列(产生完整的内存转储文件)是......

第一次机会DLL卸载:包含线程ID但不包含StackOverflowException(我不指望它,因为此时尚未抛出异常)。

第一次机会Stackoverflow:包含线程ID,但不包含StackOverflowException。

第一次机会进程关闭(关闭):包含StackOverflowException但不包含线程ID。

???

有没有办法,通过配置ADPlus或在Windbg中运行命令来捕获异常并有权访问线程ID?

作为对Magnus的回应,如果线程ID不可用,是否有一些有用的信息? Running!threads返回一些信息,但如果没有线程ID和异常,那么似乎没有任何其他东西可以从那里开始。在这种情况下,运行!clrstack似乎比运行!线程更有用。

3 个答案:

答案 0 :(得分:0)

以下帖子提供了有关捕获StackOverflowException的更多信息,但它从未完全解析

Help catching StackOverflowException with WinDbg and ADPlus

答案 1 :(得分:0)

在转储文件的事后调试期间,您是否在WinDbg中尝试过!thread 命令?

答案 2 :(得分:0)

打开第二个转储并输入命令 .ecxr [enter]
现在 dds esp [输入]
要继续查看callstack,只需写下 dds [enter]
[输入] ... [输入] ....

你会发现这个线程正在调用卸载的DLL。