2012-03-16 58 views
0

我有一個崩潰轉儲文件,我想確定發生崩潰的確切指令,更準確地說是'System_Messaging_ni + 60e4e',因爲我懷疑MSMQ問題。崩潰轉儲分析:如何找到導致崩潰的模塊和指令

Function          Arg 1  Arg 2  Arg 3 Source 
KERNELBASE!RaiseException+58     e0434f4d  00000001  00000001  
mscorwks!GetMetaDataInternalInterface+300e1 015c95dc  00000000  00000000  
mscorwks!GetMetaDataInternalInterface+29d15 00000000  00000000  0164d854  
System_Messaging_ni+814aa     00000000  00000000  0141aeb0  
System_Messaging_ni+60e4e     0061ec0c  73d2f845  8e1d9768  
mscorwks+f830        01611664  09d4f328  734402ff 

我的理解是,「System_Messaging_ni + 60e4e」手段System_Messaging_ni「出現在字節的指令從模塊開始偏移0x60e4e「。

如何確定'System_Messaging_ni'引用的確切DLL文件?我無法在我的系統中找到任何System.Message.ni.dll。 _ni後綴是什麼意思? 如何判斷偏移處的指令是IL還是本地代碼? 如果指令是在IL中,我可以使用ILDASM來確定確切位置嗎?

非常感謝您的幫助!

回答

0

,可能有事情做與.net

我所知道的數字都是十六進制的。

我注意到沒有源列。

你可能想要嘗試一個帶有調試符號的版本(看起來你已經是因爲它不是數字)。如果這就是你使用的,嗯。也許唯一剩下的就是開始分析饋入函數的參數,並查看事情發生錯誤的地方。

我通常從編譯我的代碼時生成一個.map文件開始。這會在代碼庫中生成列表/偏移量,通過它你可以確定哪個函數(如果你只是得到一個只有數字的崩潰轉儲),就會發生崩潰(就像在哪個系統調用中一樣)。

猜測爲NI:

  • 網絡接口
  • .NET接口(我猜)
  • 非?
  • ?-idl(懷疑這一點,IDL/MIDL通常指定接口,除非您正在創建接口,否則不會用於大多數最終用戶開發人員)