我觉得问这个问题有点懒散,但我似乎无法用正确的谷歌查询来找到我所拥有的问题的答案。
有点背景。我有一个应用程序,将监测其他进程的未处理的异常和崩溃等。当触发时,这个应用程序收集系统信息并使用memory.dmp创建一个MiniDumpWriteDump文件。
我们现在希望这个进程监视器应用程序可以将崩溃数据上传到服务器,但是很明显,memory.dmp文件可能是巨大的,这对上传来说是不可取的。所以我们发现,我们可以在创建memory.dmp时缩小它的大小(如果我们不包括重要的信息,可能会使memory.dmp变得无用),或者最终不得不上传大量的文件。
在我们创建了memory.dmp之后,是否可以打开它,进行一些初步分析(我知道这一点是可能的),并且删除/编辑掉memory.dmp中的任何被认为没有用的比特(以及上传的memory.dmp的更小的副本)?
例如,我指的是memory.dmp的“位”。删除有关卸载模块的句柄数据或信息。请参阅类型枚举
发布于 2015-07-01 10:56:25
首先要遵循利文·克尔斯马克斯的建议。实际上,您希望保存转储中的大量数据,以便以后进行分析,因此如果压缩转储就足够了,那么首先这样做。
更直接地回答这个问题..。
如果压缩还不够,那么就有一个众所周知的缩小转储文件的技巧,而这个转储文件只在文档这里中没有提及。
收缩现有转储文件 CDB和WinDbg也可以用来缩小转储文件。为此,请开始调试现有的转储文件,然后使用.dump命令创建一个较小大小的转储文件。
因此,如果在.dump /ma中使用了转储文件,则可以通过打开转储文件并使用.dump /mhi来缩小转储文件。选择给您提供最佳可用性和大小权衡的微型泵选项。i选项是一个很好的选择,只引入堆栈引用的堆内存。
请注意:您的里程可能因此技术而异。使用32位转储,我已经成功地完成了这个技巧。64位转储对我来说有点愚蠢,完全忽略了我传入的那些小选项。
https://stackoverflow.com/questions/31156557
复制相似问题