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

Debugging 创建后是否可以调整memory.dmp文件的大小?,debugging,windbg,minidumpwritedump,Debugging,Windbg,Minidumpwritedump,问这个问题我觉得有点懒,但我似乎无法调用正确的谷歌查询来找到我的问题的答案 一点背景知识。我有一个应用程序,可以监控其他进程是否存在未处理的异常和崩溃等。。触发时,此应用程序将收集系统信息并使用MiniDumpWriteDump创建memory.dmp文件 我们现在希望此process monitor应用程序将崩溃数据上载到服务器,但显然memory.dmp文件可能非常庞大,这不适合上载。因此,我们发现,我们可以在创建memory.dmp时减小它的大小(如果不包含重要信息,则可能使memory.

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

一点背景知识。我有一个应用程序,可以监控其他进程是否存在未处理的异常和崩溃等。。触发时,此应用程序将收集系统信息并使用MiniDumpWriteDump创建memory.dmp文件

我们现在希望此process monitor应用程序将崩溃数据上载到服务器,但显然memory.dmp文件可能非常庞大,这不适合上载。因此,我们发现,我们可以在创建memory.dmp时减小它的大小(如果不包含重要信息,则可能使memory.dmp变得无用),或者最终不得不上载大量文件

无论如何,在我们创建memory.dmp之后,是否可以打开它,进行一些初始分析(我知道这一点是可能的)以及memory.dmp中被认为没有用处的任何部分,被删除/编辑掉(并上传一个更小的memory.dmp副本)

例如,我指的是memory.dmp的“位”。正在删除已卸载模块的句柄数据或信息。请参见

首先接受客户的建议。实际上,您希望在转储中保留尽可能多的数据以供以后分析,因此,如果压缩转储就足够了,请先这样做

要更直接地回答这个问题

如果压缩还不够,有一个鲜为人知的技巧可以缩小转储文件,文档中只提到了这个文件

收缩现有转储文件

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

因此,如果使用
.dump/ma
获取转储文件,则可以通过打开该转储文件并使用
.dump/mhi
来缩小它。选择哪一个给你最好的可用性和尺寸权衡。
i
选项是只引入堆栈引用的堆内存的好选择


注意:您的里程数可能会因此技术而异。有了32位转储,我已经成功地实现了这个技巧。64位转储对我来说有点愚蠢,完全忽略了我传入的minidump选项。

为什么不压缩它?在我刚刚尝试的转储上,压缩率大约为25%(从100MB到25MB)。我怀疑,即使有了所有你能想出的聪明的删除方案,你也能删除75%的文件,并且它仍然是有用的。是的,已经在压缩其他正在收集的调试数据。平心而论,可以压缩的内容(如可以删除的内容)将因应用程序崩溃时的状态而有很大的不同(初始化为0的大部分内存很容易压缩)。我问的主要是看看是否有可能重构一个内存转储文件。太棒了,正是我想要的那种东西。非常感谢你为我挖掘出了这颗小宝石肖恩:)关于警告:它是针对dump比特和WinDbg比特的组合的吗?@Thomas当我看到这种行为时,它是一个64位的32位进程的转储。也许64位进程的64位转储工作得更好。