0

我正在使用带有 .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 看起来是一个非常有用的工具——我非常想对它有一个很好的理解。在此先感谢您的时间。

4

1 回答 1

1

不同之处在于 Microsoft 支持使用内部PRIVATE SYMBOLS,当您使用带有 PRIVATE 符号的调试诊断工具时,报告中显示的 NATIVE 堆栈更加准确和更好,因为调试器(具体为 dbgeng.dll 和 dbghelp.dll)是甚至能够找出托管函数名称,并且它们在本机堆栈中显示它们,就好像它们是本机函数但是如果我们使用 PUBLIC 符号(来自 msdl.microsoft.com)来分析转储,这些函数名称将不会显示在本机堆栈部分下的调试诊断报告中。

您应该仍然能够在报告中线程的 MANAGED 调用堆栈下看到正确的函数名称

我还可以看到转储中加载的 CLR 为 4.0 或更高版本,因此如果您使用专门针对 4.0 及更高版本框架运行时编写的 Debug Diagnostic 2.0,您将在报告中获得更好的堆栈。您可以从http://www.microsoft.com/en-us/download/details.aspx?id=40336下载

于 2014-01-24T05:17:04.350 回答