如何获取故障转储我如何获得该程序是用C#编写的。什么是故障转储?它是什么时候创建的?它保存在哪里?我怎么看?既然你说C#,我假设你使用的是Windows平台。崩溃转储,或简称转储,是进程在特定时间点的完整内存快照和其他相关系统信息。转储可用于调试程序崩溃、挂起、内存和资源泄漏,以及可能还有许多我未在此处列出的问题。在崩溃和挂起的情况下,您希望从崩溃转储中获取的第一条数据将是调用堆栈。这表示崩溃点或操作被阻止且永远不会返回的点,因此程序什么都不做。对于资源泄漏,可以在一段时间内收集一个进程的多个内存转储,并检查内存中哪些对象增长最多。这有助于缩小导致泄漏的代码部分的范围。要了解有关调试特定问题的更多信息,我强烈推荐此博客。有几种方法可以捕获转储文件。Procdump(http://technet.microsoft.com/en-us/sysinternals/dd996900.aspx)VisualStudio2010(http://msdn.microsoft.com/en-us/library/vstudio/fk551230(v=vs.100).aspx)WinDbg-比其他工具更糟糕但更令人生畏使用procdump你可以简单地做:c:>procdump.exe-maYourProcessName.exe这个命令的结果将YourProcessName写入c:。dmp的完整内存快照。-ma开关指定转储完整的内存映像。如果您正在调试崩溃或挂起,您可能不用-ma开关就可以逃脱。当您检查数据结构时,请记住如果没有完整的内存转储,您可能没有有效数据。如果没有完整的内存转储,您仍然会有调用堆栈数据,这通常足以导致崩溃和挂起。我通常的错误是在硬盘空间方面很便宜,所以收集了完整的转储。Procdump还会按时间间隔或满足特定条件时自动转储。阅读上面链接中的文档以获取更多信息。我推荐的一个开关是-e。c:>procdump.exe-ma-eYourProcessName.exe而不是立即写入转储,它只会在程序崩溃时才写入。使用VisualStudio2010,您可以使用调试器附加到进程并保存转储文件。(请记住,当您调试VisualStudio自动附加的程序时)。当您的程序处于“中断状态”(断点、未处理的异常、崩溃)时,调试菜单将有一个“将转储另存为...”选项。然后您可以将转储保存在任何您想要的地方由于您提到了C#,您很可能会收集托管转储文件。最简单的方法是使用VisualStudio2010。只需像打开任何其他文件一样打开您创建的转储文件,然后开始调试。但是,如果这不是一个选项,您始终可以使用带有SOS扩展的VS2008或WinDbg。我强烈推荐VisualStudio2010,因为SOS扩展和WinDbg通常都有相当陡峭的学习曲线。要了解有关SOS的更多信息,请在此处和此处查看这些MSDN文章。我推荐使用VisualStudio或procdump的另一个原因是它们会收集您期望的转储文件。我建议转向任务管理器的“创建转储文件工具”。原因是它会收集难以调试的32位进程的64位转储。在WindowsXP上,您可以使用此实用程序创建转储文件:http://www.microsoft.com/downloads/en/details.aspx?FamilyID=e089ca41-6a87-40c8-bf69-28ac08570b7e&displaylang=en安装后,浏览至安装目录并从命令行运行userdumpPID,其中PID是您想要获取故障转储的进程的PID(您可以在任务管理器中找到它,但您可能需要将该列添加到标准视图).然后可以在VisualStudio中打开此文件-您只需确保符号已构建。右键单击Windows7进程中的任务管理器,然后选择“使用ADPlus创建转储文件”。它带有Windows调试工具。它将在其主目录下创建故障转储文件夹。之后你可以用WinDbg分析它们。Luke,崩溃转储是与崩溃时应用程序状态相关的一整套数据,转储意味着将所有这些信息记录在某个地方,通常在文本文件中。一个基本的方法是在发生异常时记录整个堆栈跟踪,以便您稍后调查并查看哪个方法失败并抛出哪个异常,参数值是什么等等。这不是真正的挤压转储,但它有很大帮助在许多情况下。MS最近一直在做一些关于故障转储和应用程序崩溃的事情,我认为它实际上与Windows7有关...请参阅此处:应用程序恢复和重新启动http://msdn.microsoft.com/en-us/library/cc948909(v=vs.85).aspx你也可以试试WinDbghttp://www.windbg.org/故障转储是指将RAM内存和处理器的某些部分的内容复制到一个文件中。这个文件是在错误的关键点创建的,可以用来调试问题。这在过去对我有用。这是Windows中崩溃转储的键盘快捷键。*启动注册表编辑器。*找到以下注册表子项:oHKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesi8042prtParameters*在“编辑”菜单上,单击“添加值”,然后添加以下注册表项:o名称:CrashOnCtrlExdi1Scroll数据类型:REG_D重新启动计算机。http://vinaytechs.blogspot.com/2010/01/how-to-get-crash-or-hang-dump.html以上就是C#学习教程的全部内容:HowdoIgetthecrashdump分享,如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
