是否可以在创建后调整memory.dmp文件的大小?

rb_*_*rb_ 3 debugging windbg minidumpwritedump

我觉得有点懒,问这个,但我似乎无法召唤正确的谷歌查询来找到我的问题的答案.

一点背景.我有一个应用程序,它将监视未处理的异常和崩溃等其他进程.当触发时,此应用程序收集系统信息并使用MiniDumpWriteDump创建memory.dmp文件.

我们现在喜欢这个进程监控应用程序将崩溃数据上传到服务器,但显然memory.dmp文件可能很大,这对于上传来说是不可取的.因此,我们发现当我们创建memory.dmp时,我们可以减小memory.dmp的大小(如果我们不包含那么重要的信息,可能会使memory.dmp无用)或最终不得不上传大量文件.

无论如何,在我们创建了memory.dmp后,它可以被打开,一些初始分析完成(我知道这个位是可能的)并且memory.dmp的任何位被认为是无用的,被删除/删除(和改为更换了memory.dmp的较小副本)?

例如,memory.dmp的"位"是指.删除处理数据或有关卸载模块的信息.请参见MINIDUMP_TYPE枚举

Sea*_*ine 5

首先考虑Lieven Keersmaekers的建议.实际上,您希望保留转储中的尽可能多的数据以供以后分析,因此如果压缩转储就足够了,请先执行此操作.

更直接地回答这个问题......

如果压缩是不够的,有缩水的唯一提到的文档中藏转储文件鲜为人知的伎俩在这里.

缩小现有的转储文件

CDB和WinDbg也可用于收缩转储文件.为此,请开始调试现有的转储文件,然后使用.dump命令创建较小的转储文件.

因此,如果您使用了转储文件.dump /ma,则可以通过打开该转储文件并使用来缩小它.dump /mhi.选择哪个minidump选项可以为您提供最佳的可用性与尺寸权衡.该i选项是一个很好的选择,只引入堆栈引用的堆内存.

警告:您的里程可能因此技术而异.使用32位转储,我已经有了这个技巧而且没有失败.64位转储对我来说有点愚蠢,完全忽略了我传入的minidump选项.