WinDbg基础(3)Adplus参数设置

本文介绍了ADPlus的两种模式:挂起(Hang)和崩溃(Crash),以及如何使用ADPlus命令创建内存转储文件。在挂起模式下,ADPlus在进程挂起时生成内存转储;在崩溃模式下,它会在进程崩溃时捕获。此外,还提到了使用WinDbg的.dump命令和Debug Diagnostic Tool生成dump文件的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DPlus是如何工作的?

================

ADPlus 具有两种操作模式:

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

Hang模式

在此模式下,ADPlus 在脚本结束运行后立即为在命令行中指定的所有进程生成完全内存转储。创建的每一个 .dmp 文件都会放在包含运行 ADPlus 时的日期/时间戳的文件夹中。每一个文件名都包含进程名、进程 ID,以及运行 ADPlus 时的日期/时间戳。在进程内存正被转储到某一文件时,该进程被冻结。在创建完内存转储文件之后,通过将非侵害性连接/分离与 CDB 调试程序一起使用来恢复进程。

Crash模式

在此模式下,ADPlus 将 CDB 调试程序连接到在命令行中指定的所有进程。ADPlus 自动配置调试程序以监视下列类型的异常:

  • 无效句柄
  • 非法指令
  • 整数被零除
  • 浮点数被零除
  • 整数溢出
  • 无效的锁定顺序
  • 访问冲突
  • 堆栈溢出
  • C++ EH 异常
  • 未知异常

使用ADPlus的命令举例

====================

为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 w3wp.exe   在崩溃的时候为所有的w3wp.exe进程创建内存转储文件

adplus -crash -p 1244     在进程ID为1244的进程崩溃的时候为它创建内存转储文件

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


*****************************************************************************************************************************************************************************************

1、利用WinDbg里的adplus来获取dump文件

Adplus.vbs 是一个Visual Basic Script 文件,Adplus 主要用来生成内存转储文件 (dump file),内存转储文件适用于不能实时调试的情况下。在WinDbg安装目录里可以找到adplus.vbs,使用adplus.vbs生成dump文件,

adplus -hang -o d:\dump -p 1234

其中hang表示附加到进程,如果是crash,则为目标进程崩溃的时候抓取,-o后面的参数表示dump文件存到位置,-p后面的数字为进程的PID,也可以是-pn后面跟进程名称,如:adplus.vbs-hang -pn ConsoleWindbg.exe -o D:\dump

2、使用Debug Diagnostic Tool(DebugDiag)工具获取dump文件

下载Debug Diagnostic Tool然后进行安装,打开该工具,DebugDiagnostic Tool可以选择不同的规则来进行dump文件。可以根据程序崩溃时捕获dump文件,也可以根据性能指标来进行捕获,如CPU过高,死锁,HTTP响应时间过程等参数。如下图:


也可以找到对应的进程,通过如下方法进行捕获。此种方式获取的dump文件放到C:\Program Files\DebugDiag\Logs\Misc下。


3、使用.dump命令

1) 打开WinDBG—>File—>Attach to a Process,然后选择将之要进行捕获的进程。如我们这里要对ConsoleWindbg.exe进程产生dump文件。选择后如图:



2)在上图红色区域的输入框内输入产生dump 文件的命令 .dump 可以选择不同的参数来生成不同类型的dump文件。

选项(1): /m

命令行示例.dump /m D:/dump/myapp.dmp

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

选项(2): /ma

命令行示例.dump /ma D:/dump/myapp.dmp

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

 选项(3):/mFhutwd

命令行示例.dump /mFhutwd D:/dump/myapp.dmp

注解:带有数据段、非共享的读/写内存页和其他有用的信息的minidump。包含了通过minidump能够得到的最多的信息。是一种折中方案。

4、使用ProcDump工具

Procdump是一个轻量级的命令行工具, 它的主要目的是监控应用程序的CPU异常动向, 并在此异常时生成crash dump文件, 供研发人员和管理员确定问题发生的原因。你还可以把它作为生成dump的工具使用在其他的脚本中。有了它, 就完全不需要在同一台服务器上使用诸如32位系统上的Debug Diag 1.1或是64位系统上的ADPlus了。

Procdump下载:http://technet.microsoft.com/en-us/sysinternals/dd996900

procdump -ma -c 50% -s 3 -n 2 5844 (Process Name or PID) -oc:\dumpfile

-ma 生成full dump, 即包括进程的所有内存. 默认的dump格式包括线程和句柄信息。

-c 在CPU使用率到达这个阀值的时候, 生成dump文件。

-s CPU阀值必须持续多少秒才抓取dump文件。

-n 在该工具退出之前要抓取多少个dump文件。

-o dump文件保存目录。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值