通过分析Windbg中的崩溃转储,以下是堆栈上的最后一次调用(使用clrstack获取):
00000000`1eeee410 00000000`ffffffff mscorlib_ni!System.Threading.WaitHandle.WaitOne + 0x23
我想知道这个输出的不同部分究竟是什么意思(更特别是+ 0x23)。
答案 0 :(得分:5)
您正在调试64位进程,因此每个帧都打印出两个指针
第一个是000000001eeee410 - 是一个子堆栈指针,你可以在这里阅读更多关于如何手动使用它来手动恢复以前的framew http://www.codeproject.com/Articles/331050/Assembly-Helps-Debug-NET-Applications 但除非你正在处理奇怪的损坏的状态内存转储,否则它并不重要:)
第二个是帧的当前指令指针,指向下一个将要执行的汇编指令。 您可以通过使用!U命令(例如此
)取消此地址的代码来获取模式详细信息!U / d 00000000ffffffff
最后,WaitOne + 0x23表示正在执行的当前asembly命令位于System.Threading.WaitHandle.WaitOne方法的启动地址(这意味着它可能正在执行此方法)和偏移量之后的0x23 - 因为你没有mscorlib的符号,你不能得到这个偏移的行号