使用ADPlus(在故障转储模式下)生成.dmp文件。未处理异常的最后序列(产生完整的内存转储文件)是......
第一次机会DLL卸载:包含线程ID但不包含StackOverflowException(我不指望它,因为此时尚未抛出异常)。
第一次机会Stackoverflow:包含线程ID,但不包含StackOverflowException。
第一次机会进程关闭(关闭):包含StackOverflowException但不包含线程ID。
???
有没有办法,通过配置ADPlus或在Windbg中运行命令来捕获异常并有权访问线程ID?
作为对Magnus的回应,如果线程ID不可用,是否有一些有用的信息? Running!threads返回一些信息,但如果没有线程ID和异常,那么似乎没有任何其他东西可以从那里开始。在这种情况下,运行!clrstack似乎比运行!线程更有用。
答案 0 :(得分:0)
以下帖子提供了有关捕获StackOverflowException的更多信息,但它从未完全解析
答案 1 :(得分:0)
在转储文件的事后调试期间,您是否在WinDbg中尝试过!thread 命令?
答案 2 :(得分:0)
打开第二个转储并输入命令 .ecxr [enter]
现在 dds esp [输入]
要继续查看callstack,只需写下 dds [enter]
[输入] ... [输入] ....
你会发现这个线程正在调用卸载的DLL。