• 记录别人发的dump抓取方法



    转自:http://hi.baidu.com/ju_feng/blog/item/564f0439f133d7fa3a87cebe.html

    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参数设置

    -huang

        进程运行时,随时可以使用-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/

    二 在程序崩溃时候自动抓取Dump

    在注册表位置

    KEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/AeDebug

    将Auto设置为1 将Debugger设置为需要的Debugger值

    下面是华生医生抓取dump设置

    DRWTSN32 -p %ld -e %ld -g

    下面是adplus抓取Dump设置:

    "C:/Program Files/Debugging Tools for Windows (x86)/adlups.vbs" -pn notepad.exe -o -c d:/dump - quit -sc 1%

    下面是用vistudio调试设置

    KEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/AeDebug

    的Debugger设置为: "C:/Windows/system32/vsjitdebugger.exe" -p %ld -e %ld

    当进程出现异常后自动抓取dump的方法:

    C:/Program Files/Debugging Tools for Windows (x86)/windbg.exe -p %ld -e %ld -c ".dump /mfh d:/dump;q"

    http://support.microsoft.com/kb/103861

     
  • 相关阅读:
    关于jpa的Specification自定义函数,实现oracle的decode;以及如何在静态方法中调用注入的service
    转载-logbock.xml
    sql学习指南--持续更新
    转载-有时间担心中年危机,还不如用忧虑的时间来提升自己——再论程序员该如何避免所谓的中年危机
    转载-缓存
    转载-SpringBoot开发案例之整合日志管理
    转载-Spring Boot应用监控实战
    乐观锁 与 悲观锁
    独占锁 和 共享锁
    自旋锁
  • 原文地址:https://www.cnblogs.com/gamearea/p/5463126.html
Copyright © 2020-2023  润新知