adplus是windbg下面附带的一个小工具:

https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/adplus

ADPlus V7.0 is a total rewrite of ADPlus. ADPlus V7.0 is written in managed code, which allows us to easily add new features. ADPlus.exe keeps the basic functionality of ADPlus.vbs and adds some additional features. Also, there is a new companion called ADPlusManager, which extends ADPlus to a distributed environment like an HPC computer cluster.

Where to get ADPlus

ADPlus is included in Debugging Tools for Windows.

For ADPlus V7.0 documentation, see adplus.doc in the installation folder for Debugging Tools for Windows.

Adplus抓取Dump有三种方式:

一种是Hang模式

adplus -hang -pn Prs.exe -o c:/dump -quit /2/当进程进程运行时生成dump

二是Crash模式

adplus -crash -pn w3wp.exe -NoDumpOnFirst //同上,不对 first chance exceptions生成dump

三 使用配置文件

以给adplus指定配置文件,在某个特定的条件下生成dump file,并把dump file存在特定目录下
   adplus -c myconfig.cfg -pn w3wp.exe

myconfig.cfg

<ADPlus>
    <Settings>
        <RunMode>crash</RunMode>
    </Settings>
    <PreCommands>
        <Cmd> !load clr10/sos</Cmd>
    </PreCommands>
    <Exceptions>
        <Option> NoDumpOnFirstChance </Option>
        <Option> NoDumpOnSecondChance </Option>
        <Config>
            <!-- This is for the CLR exception -->
            <Code> clr </Code>
            <Actions1> Log </Actions1>
            <CustomActions1> !clr10/sos.cce System.Runtime.InteropServices.COMException 1; j ($t1 = 1) '.dump /ma /u c:/dumps/exceptiondump.dmp;gn' ; 'gn' </CustomActions1>
            <ReturnAction1> GN </ReturnAction1>
            <Actions2> Void </Actions2>
            <ReturnAction2> GN </ReturnAction2>
        </Config>
    </Exceptions>
</ADPlus>

参考文档:

http://support.microsoft.com/default.aspx?scid=kb;zh-cn;286350

http://aloneplayer.spaces.live.com/blog/cns!C3CB6D654135F83D!422.entry?wa=wsignin1.0&sa=400828496

Adplus参数设置

-hang

进程运行时,随时可以使用-hang参数得到一个Dump文件, 而不需要考虑线程是否真的处于死锁中,用于诊断高内存使用率, 高CPU使用率。
    在hang模式下,dump file是以非侵入方式被抓取的, 并没有中断线程, 因此不需要跟启动进程有相同的身份,在客户端调试服务器时,hang模式抓取dump file很有用。

-crash     在进程异常终止时抓取dump file.
    进程异常终止有3种情况:
    1.unhandled的exception
    2.asp.net进程由于iis reset或recycle而终止.
    3.出现heap毁坏,栈溢出,内存不足等错误,进程必须退出
-pn     指定要分析的进程名。使用多个“-pn process name”开关来指定多个进程。
-o

dump file的存储路径,缺省为adplus所在路径

-FullOnFirst     create full dumps on first chance exceptions
-MiniOnSecond  
-NoDumpOnFirst     如果exception被try-catch block处理,使用这个参数就不会生成dump file
-NoDumpOnSecond  
-quiet     No dialog boxes will be displayed

其他方法:

服务启动自动附加调试的方法:

在注册表:HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Image File Execution Options

  1. 指向 新建 ,然后单击 键 。 在注册表编辑器在左窗格,会注意到 新项 # 1 (新的注册表子项的名称) 中选择进行编辑。
  2. 键入 ImageName 替换 新项 # 1 ,然后按 Enter 键。

    请注意 ImageName 是进程的承载您要调试的服务的映像名称占位符。 是例如如果您要调试由具有 MyService.exe 作为图像名称的进程承载的服务,键入 MyService.exe 。

  3. 用鼠标右键单击在步骤 e 中创建注册表子项。
  4. 指向 新建 ,然后单击 字符串值 。 在注册表编辑器在右窗格,会注意到 新值 # 1 ,一个新的注册表项的名称选择进行编辑。
  5. 使用 debugger,替换 新值 # 1 ,,然后按 ENTER 键。
  6. 右键单击您在步骤 h, 调试程序 注册表项,然后单击 修改 。 编辑字符串 对话框。
  7. 在该 数值数据 文字框键入 DebuggerPath,然后单击 确定 。

    请注意 DebuggerPath 是调试器的完整路径,您要使用的占位符。 是例如如果您要使用 WinDbg 调试器调试服务,您可以键入类似于以下的完整路径:

    C:/Progra~1/Debugg~1/windbg.exe

参考: http://support.microsoft.com/kb/824344/

https://blog.csdn.net/lxj434368832/article/details/79254236

http://www.cnblogs.com/lidabo/p/3706829.html

AdPlus的更多相关文章

  1. Adplus 抓取Crash Dump

    本实例在win8.1 安装window kits https://developer.microsoft.com/en-us/windows/hardware/windows-driver-kit 1 ...

  2. adplus 抓取dump

    工具所在路径   C:\Program Files\Windows Kits\10\Debuggers\x64 cmd窗口切换目录倒adplus所在路径下,输入抓取命令.adplus -hang -p ...

  3. Windbg使用简明指南

    第一章 准备 1.1.    环境配置 _NT_DEBUGGER_EXTENSION_PATH=C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 _NT_SY ...

  4. 【性能诊断】五、并发场景的性能分析(windbg简介及dump抓取)

    windbg简介 Windbg是在windows平台下,强大的用户态和内核态调试工具.相比较于Visual Studio,它是一个轻量级的调试工具,所谓轻量级指的是它的安装文件大小较小,但是其调试功能 ...

  5. 谁在死锁Mutex——用Windbg查找Mutex死锁所有者线程

    Who is blocking that Mutex? - Fun with WinDbg, CDB and KD 05 Aug 2006 By Ingo Rammer I'm currently t ...

  6. 面向.Net程序员的dump分析

    背景 Dump文件是进程的内存镜像.可以把程序的执行状态通过调试器保存到dump文件中.在 Windows 系统上, dump 文件分为内核 dump 和用户态 dump 两种.前者一般用来分析内核相 ...

  7. 用windbg+sos找出程序中谁占用内存过高,谁占用CPU过高(转载)

    原文地址: http://www.cnblogs.com/Lawson/archive/2011/01/23/1942692.html 很早看到windbg+sos方面的知识,一直没仔细学习,也许因为 ...

  8. Windbg程序调试--转载

    WinDbg是微软发布的一款相当优秀的源码级(source-level)调试工具,可以用于Kernel模式调试和用户模式调试,还可以调试Dump文件. WinDbg是微软很重要的诊断调试工具: 可以查 ...

  9. 记一个由MemCached引发的性能问题

    最近有个项目用loadrunner做了压力测试,发现并发量还不到200服务器就支撑不住了.boss那边紧急开会,说此项目最近3个月内将有100家中大型公司用于校园招聘工作,如果这个问题不解决公司有可能 ...

随机推荐

  1. 【转】Python3使用Django2.x的settings文件详解

    # -*- coding:utf8 -*- import os # 项目路径 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__ ...

  2. git学习小游戏

    学习git可以试试这个游戏:https://learngitbranching.js.org/

  3. Java编程的逻辑 (95) - Java 8的日期和时间API

    ​本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...

  4. js中定义配置文件

    var config = (function($){ $.testConfig = { contextPath:'http://localhost:8080/test', maps:[ {id:'ma ...

  5. 通过端口映射连接不同网段的oracle

    oracle在内网,只有特殊机器能访问,通过做端口映射,可以以这个特殊机器作为“跳板”完成本机对远程oracle的连接. “跳板”机器是windows,需要在该机器上执行netsh命令: netsh ...

  6. OraclePLSQL编程

    PL/SQL编程 pl/sql(procedural language/sql)是Oracle在标准的sql语言上的扩展.pl/sql不仅允许嵌入式sql语言,还可以定义变量和常量,允许使用条件语句和 ...

  7. JavaScript学习历程02

    自定义对象 <script type="text/javascript"> window.prompt("欢迎?","请在此输入您的姓名. ...

  8. [原]unity5 AssetBundle 加载

    本文unity版本5.1.3 一.现有的打包教程: 1.http://liweizhaolili.blog.163.com/blog/static/16230744201541410275298/ 阿 ...

  9. mysql存储过程异常处理

    DELIMITER $$ USE `mtnoh_aaa_platform`$$ DROP PROCEDURE IF EXISTS `proc_eoms_electric_power_generatio ...

  10. 如何使用LinkedHashMap来实现一个LruCache

    最近在看mybatis的源代码,发现了mybatis中实现的LruCache使用到了LinkedHashMap,所以就探究了一下LinkedHashMap是如何支持Lru缓存的 LinkedHashM ...