抓取Dump

 

Dump文件主要是将内存中的内容储存起来的物理文件,根据储存的不同内存段,可以将dump文件分为内核模式dump(Kernel-mode dump)和用户模式dump(User-mode dump),我们主要用到是用户模式dump。

用户模式dump又可以分为完全dump(Full User-Mode Dump)和迷你dump(Minidump),minidump只包含目标进程相关的内存,full dump包含了所有用户空间的内存,同时还包括了虚拟内存,所以minidump远远小于full dump,

我们常用的是迷你dump。

 

一、任务管理器

 

在任务管理器中,切换到"进程"选项卡,右键点击你想要创建dump文件的进程,然后选择"创建转储文件"即可

如果想在程序崩溃的那一刻抓取dump文件。可以通过adplus命令来抓

ADPlus 具有两种操作模式:

“Hang”模式用于解决进程挂起、100% CPU 使用率以及不涉及崩溃的其他问题。当您在挂起模式下使用 ADPlus 时,在运行脚本之前必须等待,直到进程停止响应(与崩溃模式不同,挂起模式不是持久性的)。
“Crash”模式用于解决 Dr. Watson 错误导致的崩溃问题,或者用于解决导致程序或服务意外退出的任何其他类型的错误。当您在崩溃模式下使用 ADPlus 时,必须在发生崩溃前启动 ADPlus。可以通过“-notify”开关对 ADPlus 进行配置,以便通知管理员或计算机发生了崩溃。

二、ADPLUS

使用ADPlus的命令举例

-crash:表示我捕捉的是一个Crash dump。
-p:指定要捕捉的进程ID。 -IIS表示我们捕捉IIS的所有进程。
-quiet:不弹出提示窗口
-fullonfirst:表示我希望在first chance时捕捉完整的dump信息,也就是进程的所有完整信息。
-o :后面跟着dump文件的存放路径
-c : 指定配置文件

为Hang住的情况抓Dump:

adplus -hang -pn w3wp.exe -o C:\dumps 为所有的w3wp.exe进程创建dump到C:\dumps

adplus -hang -p 1244 为进程ID为1244的进程创建内存转储文件.

adplus -hang –IIS 为所有跟IIS相关的进程(比如w3wp.exe, inetinfo.exe, aspnet_wp.exe 和dllhost.exe)创建内存转储文件.

为Crash的情况抓Dump:

adplus -crash -pn -fullonfirst w3wp.exe 在崩溃的时候为所有的w3wp.exe进程创建内存转储文件

adplus -crash -p 8588 -fullonfirst -o d:\dumps 在进程ID为8588 的进程崩溃的时候为它创建内存转储文件

adplus -crash –IIS 为所有跟IIS相关的进程(比如w3wp.exe, inetinfo.exe, aspnet_wp.exe 和dllhost.exe)创建崩溃时的内存转储文件.

三、Windbg

附加(attach)已经启动的程序,选择好进程, 是windbg输入命令 .dump /ma d:\w3wp.dmp

1、查看进程ID

 

2、attach进程

 

 

3、生成dump文件

 

 

 

选项(1): /m

命令行示例:.dump /m d:\w3wp.dmp

注解: 缺省选项,生成标准的minidump, 转储文件通常较小,便于在网络上通过邮件或其他方式传输。 这种文件的信息量较少,只包含系统信息、加载的模块(DLL)信息、 进程信息和线程信息。

选项(2): /ma

命令行示例:.dump /ma d:\w3wp.dmp

注解: 带有尽量多选项的minidump(包括完整的内存内容、句柄、未加载的模块,等等),文件很大,但如果条件允许(本机调试,局域网环境), 推荐使用这中dump。

 

posted @ 2018-07-17 10:29  虎头  阅读(1662)  评论(0编辑  收藏  举报