gpt4 book ai didi

c# - 分析 C# 应用程序转储文件

转载 作者:太空狗 更新时间:2023-10-29 23:18:59 26 4
gpt4 key购买 nike

我写了一个 C# 应用程序,它在 XP 上运行良好,但在 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

如有任何帮助,我们将不胜感激。

最佳答案

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

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

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

关于c# - 分析 C# 应用程序转储文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3223021/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com