windows下dmp抓取方法总结

作为windows开发员很头疼的就是程序编译通过但是在运行的时候crash掉。但是作为一个软件调试者,最基本的crash后dmp的抓取和分析是基本的技能了。这段时间在和同学调代码的时候程序会crash掉,也趁这个机会也回顾下这些知识然后总结下来。

程序崩溃的种类

  • 程序崩溃后弹出提示框
  • 程序直接退出
  • 系统崩溃,蓝屏

第三方程序dmp抓取

一般运行第三方程序的时候可能会遇到程序宕掉的情况,但是此时我们又没有源码,如果想要重现dmp过程的话,通过对软件的逆向分析可以从正向的角度去跟踪程序crash的过程,当然也可以通过借助软件来辅助我们分析崩掉了的程序。
类似的工具有很多,之前也有人搜集过了:
How To Capture A Minidump
这里我简单的介绍下自己进程使用的一些工具:

windows自带工具

对,你没看错,windows自带的工具很完善

  • windows任务管理器

这里写图片描述

  • windows注册表
    在注册表项
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\ 添加
    LocalDumps项,
    这里写图片描述
    DumpType:
    0 = Create a custom dump
    1 = Mini dump
    2 = Full dump

windbg

windbg是经典的分析dmp的工具啦
比较简单的,就是为windbg设置一个运行的参数。
这里写图片描述
然后windbg会弹出提示过框:
这里写图片描述
然后此时在运行程序,如果程序崩溃,则会默认启动windbg加载,然后就可以通过windbg生成dmp文件:
.dump /参数 dmp路径
/m :生成minidump,只保存系统信息,加载模块,进程及线程
/ma:尽可能多的信息,包括整的内存内容、句柄、未加载的模块,等等
/mFhutwd:带有数据段,非共享的读/写内存页和其他有用信息的minidump
这种生成dmp文件的方式是借助了windbg的附加,所以如果程序加入了反调试的话,就稍微显得复杂些。

drwtsn32.exe

用法和windbg类似,可以先将他设置为默认的调试器
drwtsn32 [-i][-g][-p pid][-e event]
-i:讲drwtsn设置为默认的应用程序错误调试程序
-g: 被忽略,但作为windbg和ntsd的兼容而被提供
-p:pid为要调试的进程id
-e:event表示进程附加完成的事件

具体可参见:
drwtsn32使用手册

google breakpad

Google breakpad是一个非常实用的跨平台的崩溃转储和分析模块,他支持Windows,Linux和Mac和Solaris。由于他本身跨平台,所以很大的减少我们在平台移植时的工作,毕竟崩溃转储,每个平台下都不同,使用起来很难统一,而Google breakpad就帮

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值