Pie*_*rre 5 c# analysis dump dmp
我编写了一个在XP上运行良好的C#应用程序但冻结了Vista/7.我有一个应用程序转储(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
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激.
分析转储文件不适合胆小的人,需要一些锻炼.一个很好的介绍是高级.NET调试的前几章,它向您展示了如何使用Windows调试工具,SOS调试器扩展(需要使用本机调用映射托管代码,这是您需要的),这是其中的一部分. NET SDK和SOSEX调试器扩展,它为SOS添加了几个强大的扩展命令.
如果您之前从未使用过NTSD,WinDbg,SOS,或者如果相对虚拟地址的术语没有响铃,我强烈建议您阅读本书的第一章.它只需要几个小时的投资,突然间为您打开一个全新的世界.它不会使调试变得轻而易举(它几乎不会出现问题复杂的情况)但它确实向您展示了解决此类问题的正确途径.
只是看着上面的垃圾场并没有告诉我们多少,我很害怕.如果您无法从Visual Studio中重现错误,则NTSD或WinDbg是您的朋友.我唯一可以告诉你的是你的入口点是来自mscoree.dll的_CorExeMain.但这是每个.NET程序集的引导程序.之后,加载了一个表单并执行了一些代码,但具体到底是什么?没有你的可执行文件,PDB,最好也是你的源文件,很难说出任何有用的东西.
| 归档时间: |
|
| 查看次数: |
2646 次 |
| 最近记录: |