首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在保留一些堆信息的同时减少托管程序的小型转储的大小?

在保留一些堆信息的同时减少托管程序的小型转储的大小?
EN

Stack Overflow用户
提问于 2010-07-27 21:51:09
回答 5查看 1.4K关注 0票数 17

有了.NET 4.0中的转储调试支持,我们可以自动查看(当然是在询问用户之后:)创建C#程序崩溃的小转储,以便将它们上传到我们的问题跟踪系统(以便这些小转储可以帮助解决崩溃的原因)。

使用WithFullMemory小型转储类型时,一切工作正常。我们可以看到堆栈和堆的变量。不幸的是,即使对于小的C#程序,(压缩的)转储也是相当大的。

如果我们使用“普通”的小型转储类型,我们会得到一个非常小的转储,但在托管调试器中甚至没有堆栈变量信息可用。实际上,任何小于WithFullMemory的值在托管调试器中似乎都没有什么用处。我们已经做了一些尝试,试图使用MINIDUMP_CALLBACK_ROUTINE将包含的模块信息限制在我们自己的模块中,但它似乎对托管转储几乎没有影响,但仍然设法中断托管调试?

有没有人有任何关于如何修剪小型转储,同时保持它对托管调试有用的提示?

EN

回答 5

Stack Overflow用户

发布于 2011-03-29 02:46:28

我使用以下标志来节省空间,以便为C++应用程序生成有用的小型转储文件:

代码语言:javascript
复制
MiniDumpWithPrivateReadWriteMemory | 
            MiniDumpWithDataSegs | 
            MiniDumpWithHandleData |
            MiniDumpWithFullMemoryInfo | 
            MiniDumpWithThreadInfo | 
            MiniDumpWithUnloadedModules

标志值在DbgHelp.h中指定,需要编组到C#中。通过指定CallbackRoutine进一步限制转储。

票数 3
EN

Stack Overflow用户

发布于 2011-02-02 23:55:15

仅供参考,如上所述,ClrDump看起来非常酷,但它似乎只适用于1.1。和2.0运行时。

票数 1
EN

Stack Overflow用户

发布于 2011-02-15 15:42:06

恕我直言,我强烈建议您注册一个微软WinQual帐户,向微软注册您的应用程序。

http://www.microsoft.com/whdc/winlogo/maintain/StartWER.mspx

这不仅允许您利用微软广泛的崩溃收集和分析服务(免费!),还允许您通过Windows的内置错误报告工具发布应用程序的修复程序和补丁程序。

此外,通过参与WinQual计划,部署您的应用程序的企业和使用内部Windows错误报告系统的企业也将能够收集、报告和接收您的应用程序的补丁。

另一个好处是,使用WinQual,你离获得应用程序徽标认证又近了一步!

与使用自己的崩溃收集和报告系统相比,我工作过的每个使用WinQual的OEM和ISV都节省了大量的精力和费用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3344310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档