01-windows调试工具(ProcDump使用)

  • 工具msdn下载地址:https://learn.microsoft.com/zh-cn/sysinternals/downloads/procdump
  • csdn的下载地址:windows调试工具-C++文档类资源-CSDN下载
  • ProcDump简介:
    • 详细的使用说明参考:https://learn.microsoft.com/zh-cn/sysinternals/downloads/procdump
    • ProcDump 是一个命令行实用工具,其主要用途是监视应用程序的 CPU 峰值,并在出现峰值期间生成故障转储。
    • ProcDump 还包括挂起窗口监视 (使用 Windows 和任务管理器使用) 、未经处理的异常监视的窗口挂起定义,并且可以基于系统性能计数器的值生成转储。 
    • 监视指定的进程到程序异常的时候,生成DMP文件
    • 进程的运行期间生成DMP文件
  • ProcDump的转储类型:
  • -mm写入“Mini”转储文件。 (默认值)
    - 包括直接或间接引用的内存 (堆栈及其) 引用的内容。
    - 包括 (进程、线程、模块、句柄、地址空间等) 的所有元数据。
    -ma写入“完整”转储文件。
    - 包括所有内存 (映像、映射和专用) 。
    - 包括 (进程、线程、模块、句柄、地址空间等) 的所有元数据。
    -mt写入“会审”转储文件。
    - 包括直接引用的内存 (堆栈) 。
    - 包括有限的元数据 (进程、线程、模块和句柄) 。
    - 尝试删除敏感信息,但不能保证。
    -mp编写“MiniPlus”转储文件。
    - 包括所有专用内存和所有读/写映像或映射内存。
    - 包括 (进程、线程、模块、句柄、地址空间等) 的所有元数据。
    - 为了最小化大小,将排除超过 512MB 的最大专用内存区域。
      内存区域定义为相同大小的内存分配的总和。
      转储与完整转储一样详细,但大小为 10%-75%。
    - 注意:由于调试限制,CLR 进程将转储为 Full (-ma) 
    -mc写入“自定义”转储文件。
    - 包括由指定的 MINIDUMP_TYPE 掩码 (十六进制) 定义的内存和元数据
    -md编写“回调”转储文件。
    - 包括由 MiniDumpWriteDump 指定 DLL 命名 MiniDumpCallbackRoutine 的回调例程定义的内存。
    - 包括 (进程、线程、模块、句柄、地址空间等) 的所有元数据。
    -mk此外,还要编写“内核”转储文件。
    - 包括进程中线程的内核堆栈。
    - 使用克隆 () -mk 时,OS 不支持内核转储 (-r) 。
    - 使用多个转储大小时,将针对每个转储大小进行内核转储
  • 条件说明:

  • 条件说明
    -a避免中断。 需要 -r。 如果触发器会导致目标由于超出并发转储限制而长时间挂起,则将跳过该触发器。
    -at避免超时时中断。 在几秒钟内 N 取消触发器的收集。
    -b将调试断点视为异常, () 忽略它们。
    -cCPU 阈值高于该阈值,用于创建进程的转储。
    -clCPU 阈值低于该阈值,用于创建进程的转储。
    -dc将指定的字符串添加到生成的转储注释。
    -e当进程遇到未经处理的异常时写入转储。
    包括 以 1 在出现第一次机会异常时创建转储。
    添加 -ld 以在加载 DLL (模块) 时创建转储, (筛选) 应用。
    添加 -ud 以在卸载 DLL (模块) 时创建转储, (筛选) 应用。
    添加 -ct 以在创建线程时创建转储。
    添加 -et 以在线程退出时创建转储。
    -f筛选器 (包括) 异常内容、调试日志记录和 DLL 加载/卸载时的文件名。 支持通配符 (*) 。
    -fx筛选器 (DLL 加载/卸载时排除异常内容、调试日志记录和文件名的) 。 支持通配符 (*) 。
    -g在托管进程中作为本机调试器运行, (无互操作) 。
    -h如果进程有一个挂起的窗口, (至少 5 秒) 不响应窗口消息,则写入转储。
    -k克隆 (-r) 后或在转储收集结束时终止进程。
    -l显示进程的调试日志记录。
    -m创建转储的内存提交阈值(以 MB 为单位)。
    -ml当内存提交低于指定的 MB 值时触发。
    -n退出前要写入的转储数。
    -o覆盖现有转储文件。
    -p当性能计数器达到或超过指定的阈值时触发。 某些计数器和/或实例名称可能区分大小写。
    -pl当性能计数器低于指定的阈值时触发。
    -r使用克隆进行转储。 并发限制是可选的, (默认为 1,最大为 5) 。 使用克隆 () -mk 时,OS 不支持内核转储 (-r) 。 警告: 高并发值可能会影响系统性能。
    - Windows 7:使用反射。 OS 不支持 -e
    - Windows 8.0:使用反射。 OS 不支持 -e
    - Windows 8.1+:使用 PSS。 支持所有触发器类型。
    -s写入转储前的连续秒 (默认值为 10) 。
    -t进程终止时写入转储。
    -uTreat CPU usage relative to a single core (used with -c).
    -v仅调试: 详细输出。
    -w如果指定的进程未运行,请等待启动。
    -wer将 (最大的) 转储排队到Windows 错误报告。
    -x使用可选参数启动指定的映像。 如果是应用商店应用程序或包,ProcDump 将在下次激活 (仅) 启动。
    -y隐藏: 应用商店应用程序激活。
    -64默认情况下,在 64 位 Windows 上运行时,ProcDump 将捕获 32 位进程的 32 位转储。 此选项替代以创建 64 位转储。 仅用于 WOW64 子系统调试。
  • Procdump的异常DMP文件生成
    • 32位系统打开procdump.exe,64位系统则打开procdump64.exe
    • 指定某一个进程,立即生成一个dump文件,如果进程不存在,等待进程启动
    • procdump64.exe  -w   进程名称   (进程启动后立马生成dmp文件)
    • procdump64.exe  -e  -w   进程名称   (进程异常后立马生成dmp文件)

    • procdump  -ma   4778(直接生成进程号为4778的Full Dump)
    • procdump64.exe  -ma  -t  进程ID(指定的进程异常后生成一个全dmp文件)
  • ProcDump高CPU的DMP文件生成
    • 当系统 CPU 使用率持续 5 秒超过 70% 时,连续抓 3 个 Full Dump
      • procdump -c 70 -s 5 -ma -n 3  进程名称/进程ID
    • 当系统 CPU 使用率超过 80%,抓取test.exe 进程的 Mini Dump。
      • procdump test  -p "\Processor(_Total)\% Processor Time" 80
    • 当test.exe的句柄数超过1000时,抓取dmp文件
      • procdump -ma test -p "\Process(test)\Handle Count" 10000
  • windbg分析:
    • 将生成的dmp文件,使用windbg工具进行分析
包含以下工具 accesschk.exe accesschk64.exe AccessEnum.exe AdExplorer.chm ADExplorer.exe ADInsight.chm ADInsight.exe adrestore.exe Autologon.exe autoruns.chm Autoruns.exe Autoruns64.exe autorunsc.exe autorunsc64.exe Bginfo.exe Cacheset.exe Clockres.exe Clockres64.exe Contig.exe Contig64.exe Coreinfo.exe ctrl2cap.amd.sys ctrl2cap.exe ctrl2cap.nt4.sys ctrl2cap.nt5.sys dbgview.chm Dbgview.exe Desktops.exe Disk2vhd.chm disk2vhd.exe diskext.exe diskext64.exe Diskmon.exe DISKMON.HLP DiskView.exe DMON.SYS du.exe du64.exe efsdump.exe Eula.txt FindLinks.exe FindLinks64.exe handle.exe handle64.exe hex2dec.exe hex2dec64.exe junction.exe junction64.exe ldmdump.exe Listdlls.exe Listdlls64.exe livekd.exe LoadOrd.exe LoadOrd64.exe LoadOrdC.exe LoadOrdC64.exe logonsessions.exe logonsessions64.exe movefile.exe movefile64.exe notmyfault.exe notmyfault64.exe notmyfaultc.exe notmyfaultc64.exe ntfsinfo.exe ntfsinfo64.exe pagedfrg.exe pagedfrg.hlp pendmoves.exe pendmoves64.exe pipelist.exe pipelist64.exe PORTMON.CNT portmon.exe PORTMON.HLP procdump.exe procdump64.exe procexp.chm procexp.exe procmon.chm Procmon.exe PsExec.exe PsExec64.exe psfile.exe psfile64.exe PsGetsid.exe PsGetsid64.exe PsInfo.exe PsInfo64.exe pskill.exe pskill64.exe pslist.exe pslist64.exe PsLoggedon.exe PsLoggedon64.exe psloglist.exe pspasswd.exe pspasswd64.exe psping.exe psping64.exe PsService.exe PsService64.exe psshutdown.exe pssuspend.exe pssuspend64.exe Pstools.chm psversion.txt RAMMap.exe readme.txt RegDelNull.exe RegDelNull64.exe regjump.exe RootkitRevealer.chm RootkitRevealer.exe ru.exe ru64.exe sdelete.exe sdelete64.exe ShareEnum.exe ShellRunas.exe sigcheck.exe sigcheck64.exe streams.exe streams64.exe strings.exe strings64.exe sync.exe sync64.exe Sysmon.exe Sysmon64.exe Tcpvcon.exe tcpview.chm Tcpview.exe TCPVIEW.HLP Testlimit.exe Testlimit64.exe Vmmap.chm vmmap.exe Volumeid.exe Volumeid64.exe whois.exe whois64.exe Winobj.exe WINOBJ.HLP ZoomIt.exe
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值