簡體   English   中英

分析C#應用程序轉儲文件

[英]analyse c# application dump file

我編寫了一個在XP上運行良好但在Vista / 7上凍結的C#應用​​程序。 我得到了一個應用程序轉儲(dmp文件)來分析問題。 我不明白如何在C#中獲取堆棧跟蹤(因為我當然擁有源代碼)。 我已加載符號,但似乎未加載托管代碼,這是堆棧跟蹤:

ntdll.dll!_KiFastSystemCallRet@0()  
user32.dll!_NtUserWaitMessage@0()  + 0xc bytes  
System.Windows.Forms.ni.dll!68bb8ea8()  
[Frames below may be incorrect and/or missing, no symbols loaded for System.Windows.Forms.ni.dll]   
System.Windows.Forms.ni.dll!68bb8ea8()  
System.Windows.Forms.ni.dll!68bb8997()  
System.Windows.Forms.ni.dll!68bb87e1()  
System.Windows.Forms.ni.dll!68b75931()  
mscorwks.dll!_CallDescrWorker@20()  + 0x33 bytes    
mscorwks.dll!_CallDescrWorkerWithHandler@24()  + 0x9f bytes 
mscorwks.dll!MethodDesc::CallDescr()  + 0x15a bytes 
mscorwks.dll!MethodDesc::CallTargetWorker()  + 0x1f bytes   
mscorwks.dll!MethodDescCallSite::CallWithValueTypes_RetArgSlot()  + 0x1a bytes  
mscorwks.dll!ClassLoader::RunMain()  - 0x39040 bytes    
mscorwks.dll!Assembly::ExecuteMainMethod()  + 0xa4 bytes    
mscorwks.dll!SystemDomain::ExecuteMainMethod()  + 0x416 bytes   
mscorwks.dll!ExecuteEXE()  + 0x49 bytes 
mscorwks.dll!__CorExeMain@0()  + 0x98 bytes 
mscoreei.dll!71f455ab()     
mscoree.dll!_ShellShim__CorExeMain@0()  + 0x227 bytes   
mscoree.dll!__CorExeMain_Exported@0()  + 0x8 bytes  
kernel32.dll!@BaseThreadInitThunk@12()  + 0x12 bytes    
ntdll.dll!___RtlUserThreadStart@8()  + 0x27 bytes   
ntdll.dll!__RtlUserThreadStart@8()  + 0x1b bytes

任何幫助,將不勝感激。

分析轉儲文件不是出於膽小,而是需要一些鍛煉。 出色的介紹是Advanced .NET Debugging的前幾章,向您展示了如何使用Windows調試工具 ,SOS調試器擴展(需要在此處使用本機調用映射托管代碼),它是的一部分。 NET SDKSOSEX調試器擴展 ,它向SOS添加了兩個功能強大的擴展命令。

如果您以前從未使用過NTSD,WinDbg,SOS,或者相對虛擬地址一詞不為所動,我強烈建議您閱讀本書的第一章。 它只需要幾個小時的投資,突然之間就會為您打開一個全新的世界。 它並不會使調試變得輕而易舉(問題幾乎不會出現),但是它確實向您顯示了解決此類問題的正確方法。

恐怕只是看上面的垃圾堆並不能告訴我們太多。 如果您無法在Visual Studio中重現該錯誤,則NTSD或WinDbg是您的朋友。 從這里我唯一可以說的是您的入口點是mscoree.dll中的_CorExeMain。 但這是每個.NET程序集的引導程序。 稍后,將加載表單並執行一些代碼,但是究竟是什么呢? 沒有可執行文件,PDB,最好還有源文件,很難說出任何有用的信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM