我正在使用.dmp文件使用debugdiag 1.2。我一直在使用Microsoft支持,我们获得了不同的功能跟踪详细信息 - 他的版本具有更多的详细信息,其中包含功能名称和参数。
我想知道我是否缺少与他相同的东西?
例如,我会得到:
ntdll!NtWaitForMultipleObjects+a
KERNELBASE!WaitForMultipleObjectsEx+e5
clr!WaitForMultipleObjectsEx_SO_TOLERANT+62
clr!Thread::DoAppropriateAptStateWait+53
clr!Thread::DoAppropriateWaitWorker+186
clr!Thread::DoAppropriateWait+7d
clr!WaitHandleNative::CorWaitOneNative+151
mscorlib_ni+509aa4
0x000007fd`231e0e5c
mscorlib_ni+4efd85
mscorlib_ni+4efae9
mscorlib_ni+4efaa7
mscorlib_ni+d529ad
对于同一转储文件,他会得到:
ntdll!ZwWaitForMultipleObjects+a
KERNELBASE!WaitForMultipleObjectsEx+e5
clr!WaitForMultipleObjectsEx_SO_TOLERANT+62
clr!Thread::DoAppropriateAptStateWait+53
clr!Thread::DoAppropriateWaitWorker+186
clr!Thread::DoAppropriateWait+7d
clr!WaitHandleNative::CorWaitOneNative+151
mscorlib_ni!System.Threading.WaitHandle.InternalWaitOne(System.Runtime.InteropServices.SafeHandle, Int64, Boolean, Boolean)+14
FiftyOne_Foundation!Unknown+3c
mscorlib_ni!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)+285
mscorlib_ni!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)+9
mscorlib_ni!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)+57
mscorlib_ni!System.Threading.ThreadHelper.ThreadStart(System.Object)+5d
debugdiag看起来像是一个非常有用的工具 - 我非常想对其有很好的了解。预先感谢您的时间。
不同的是,Microsoft支持使用内部私有符号,当您使用带有私有符号的调试诊断工具时,报告中显示的本机堆栈更为准确。更好的是,因为调试器(dbggeng.dll和dbghelp.dll要具体)甚至能够弄清楚托管函数名称,并且它们在本机堆栈中显示了这些功能,就像它们是本机函数一样,但是如果我们使用公共符号(从msdl.microsoft.com)要分析转储,这些功能名称不会在本机堆栈部分下的"调试DIAG报告"中显示。
您仍然应该能够在报告中的线程托管呼叫刻在
中看到正确的功能名称我还可以看到,在转储中加载的CLR为4.0或更高,因此,如果您使用Debug Diagnostic 2.0,则可以在报告中获得更好的堆栈,因为专门为Target 4.0及以上框架运行时间编写。您可以从http://www.microsoft.com/en-us/download/details.aspx?id=40336