有了.NET 4.0中的转储调试支持,我们可以自动查看(当然是在询问用户之后:)创建C#程序崩溃的小转储,以便将它们上传到我们的问题跟踪系统(以便这些小转储可以帮助解决崩溃的原因)。
使用WithFullMemory小型转储类型时,一切工作正常。我们可以看到堆栈和堆的变量。不幸的是,即使对于小的C#程序,(压缩的)转储也是相当大的。
如果我们使用“普通”的小型转储类型,我们会得到一个非常小的转储,但在托管调试器中甚至没有堆栈变量信息可用。实际上,任何小于WithFullMemory的值在托管调试器中似乎都没有什么用处。我们已经做了一些尝试,试图使用MINIDUMP_CALLBACK_ROUTINE将包含的模块信息限制在我们自己的模块中,但它似乎对托管转储几乎没有影响,但仍然设法中断托管调试?
有没有人有任何关于如何修剪小型转储,同时保持它对托管调试有用的提示?
发布于 2011-03-29 02:46:28
我使用以下标志来节省空间,以便为C++应用程序生成有用的小型转储文件:
MiniDumpWithPrivateReadWriteMemory |
MiniDumpWithDataSegs |
MiniDumpWithHandleData |
MiniDumpWithFullMemoryInfo |
MiniDumpWithThreadInfo |
MiniDumpWithUnloadedModules标志值在DbgHelp.h中指定,需要编组到C#中。通过指定CallbackRoutine进一步限制转储。
发布于 2011-02-02 23:55:15
仅供参考,如上所述,ClrDump看起来非常酷,但它似乎只适用于1.1。和2.0运行时。
发布于 2011-02-15 15:42:06
恕我直言,我强烈建议您注册一个微软WinQual帐户,向微软注册您的应用程序。
http://www.microsoft.com/whdc/winlogo/maintain/StartWER.mspx
这不仅允许您利用微软广泛的崩溃收集和分析服务(免费!),还允许您通过Windows的内置错误报告工具发布应用程序的修复程序和补丁程序。
此外,通过参与WinQual计划,部署您的应用程序的企业和使用内部Windows错误报告系统的企业也将能够收集、报告和接收您的应用程序的补丁。
另一个好处是,使用WinQual,你离获得应用程序徽标认证又近了一步!
与使用自己的崩溃收集和报告系统相比,我工作过的每个使用WinQual的OEM和ISV都节省了大量的精力和费用。
https://stackoverflow.com/questions/3344310
复制相似问题