【问题标题】:analyse c# application dump file分析 c# 应用程序转储文件
【发布时间】:2011-03-14 11:23:35
【问题描述】:

我编写了一个在 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

任何帮助将不胜感激。

【问题讨论】:

    标签: c# analysis dump dmp


    【解决方案1】:

    分析转储文件不适合胆小的人,需要一些练习。一个很好的介绍是Advanced .NET Debugging 的前几章,它向您展示了如何使用the Debugging Tools for Windows,SOS 调试器扩展(需要将托管代码映射到本机调用,您需要在这里)这是part of the .NET SDK 和@987654324 @ 为 SOS 添加了几个强大的扩展命令。

    如果您以前从未使用过 NTSD、WinDbg、SOS,或者如果相对虚拟地址等术语没有响起,我强烈建议您阅读本书的前几章。它只需要几个小时的投资,突然之间,一个全新的世界为你打开了。它不会让调试变得轻而易举(当问题很复杂时几乎不会),但它确实向您展示了解决此类问题的正确途径。

    恐怕只看上面的转储并不能告诉我们太多。如果您无法从 Visual Studio 中重现错误,NTSD 或 WinDbg 是您的朋友。我可以从这里唯一知道的是,您的入口点是来自 mscoree.dll 的 _CorExeMain。但这是每个 .NET 程序集的引导程序。稍后,加载了一个表单并执行了一些代码,但究竟是什么?如果没有您的可执行文件、PDB,最好还有您的源文件,就很难说出任何有用的东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-28
      • 2010-09-06
      • 2010-09-10
      • 1970-01-01
      • 2010-10-12
      相关资源
      最近更新 更多