2

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

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

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

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

???

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

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

4

3 回答 3

0

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

使用 WinDbg 和 ADPlus 帮助捕获 StackOverflowException

于 2009-06-24T19:56:10.430 回答
0

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

于 2009-06-24T21:28:58.747 回答
0

打开第二个转储并输入命令.ecxr [enter]
Now dds esp [enter]
要继续查看调用堆栈,只需编写dds [enter]
[enter]....[enter]....

你可能会找到这个线程正在调用卸载的 DLL。

于 2009-07-13T10:39:47.607 回答