2014-01-21 68 views
0

我使用debugdiag 1.2與.dmp文件。我一直在使用Microsoft支持,並且我們獲得了不同的功能跟蹤細節 - 他的版本更加詳細,包含函數名稱和參數。使用debugdiag獲得更多的通話功能信息

我想知道是否有什麼我失蹤了,以得到他一樣?

例如,我將獲得:

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資料看起來像一個巨大的有用的工具 - 我深深地喜歡有很好的理解它。在此先感謝您的時間。

回答

1

不同的是,微軟支持使用內部專用符號,當您使用調試診斷工具,專用符號,在報表中顯示的NATIVE棧是更準確,更好,因爲調試器(dbgeng.dll和DBGHELP。 dll是具體的)能夠找出即使託管的函數名稱,它們將它們顯示在本地堆棧中,就好像它們是本地函數一樣,但是如果我們使用PUBLIC符號(來自msdl.microsoft.com)來分析轉儲,這些函數名稱不會顯示在本機堆棧部分下的調試診斷報告中。

您應該仍然能夠看到正確的函數名稱在報告中線程的託管調用堆棧下

我還可以看到,在轉儲加載CLR是4.0或以上,所以你會得到更好的堆棧在報告中,如果您使用調試診斷2.0,因爲它專門寫入目標4.0和更高版本的框架運行時。您可以從http://www.microsoft.com/en-us/download/details.aspx?id=40336