ProcDump v11.0
作者:Mark Russinovich 和 Andrew Richards
发布时间:2022 年 3 月 11 日
下载 ProcDump (714 KB)
下载 ProcDump for Linux (GitHub)
下载 ProcDump for Mac (GitHub)
使用 ZoomIt 创建
简介
ProcDump 是一个命令行实用工具,其主要用途是监视应用程序的 CPU 峰值,并在出现峰值期间生成故障转储,管理员或开发人员可以使用这些转储来确定出现峰值的原因。 ProcDump 还支持挂起窗口监视(使用与 Windows 和任务管理器使用的窗口挂起相同的定义)、未处理的异常监视,并且可以根据系统性能计数器的值生成转储。 它还可用作可嵌入到其他脚本中的常规进程转储实用工具。
使用 ProcDump
捕获使用情况:
procdump.exe [-mm] [-ma] [-mt] [-mp] [-mc <Mask>] [-md <Callback_DLL>] [-mk]
[-n <Count>]
[-s <Seconds>]
[-c|-cl <CPU_Usage> [-u]]
[-m|-ml <Commit_Usage>]
[-p|-pl <Counter> <Threshold>]
[-h]
[-e [1] [-g] [-b] [-ld] [-ud] [-ct] [-et]]
[-l]
[-t]
[-f <Include_Filter>, ...]
[-fx <Exclude_Filter>, ...]
[-dc <Comment>]
[-o]
[-r [1..5] [-a]]
[-at <Timeout>]
[-wer]
[-64]
{
{{[-w] <Process_Name> | <Service_Name> | <PID>} [<Dump_File> | <Dump_Folder>]}
|
{-x <Dump_Folder> <Image_File> [Argument, ...]}
}
安装使用情况:
procdump.exe -i [Dump_Folder]
[-mm] [-ma] [-mt] [-mp] [-mc <Mask>] [-md <Callback_DLL>] [-mk]
[-r]
[-at <Timeout>]
[-k]
[-wer]
卸载使用情况:
procdump.exe -u
转储类型:
转储类型 | 说明 |
---|---|
-mm | 写入“小型”转储文件。 (默认值) - 包括直接和间接引用的内存(堆栈及其引用的内容)。 - 包括所有元数据(进程、线程、模块、句柄、地址空间等)。 |
-ma | 写入“完整”转储文件。 - 包括所有内存(映像、映射和专用内存)。 - 包括所有元数据(进程、线程、模块、句柄、地址空间等)。 |
-mt | 写入“分类”转储文件。 - 包括直接引用的内存(堆栈)。 - 包括有限的元数据(进程、线程、模块和句柄)。 - 尝试删除敏感信息,但不能保证删除。 |
-mp | 写入“小型增强”转储文件。 - 包括所有专用内存和所有读/写映像或映射内存。 - 包括所有元数据(进程、线程、模块、句柄、地址空间等)。 - 为了使大小最小化,将排除超过 512MB 的最大专用内存区域。 内存区域定义为相同大小的内存分配的总和。 转储与完整转储一样详细,但大小只有完整转储的 10%-75%。 - 注意:由于调试限制,CLR 进程将转储为完整转储 (-ma)。 |
-mc | 写入“自定义”转储文件。 - 包括由指定的 MINIDUMP_TYPE 掩码(十六进制)定义的内存和元数据。 |
-md | 写入“回调”转储文件。 - 包括由指定 DLL 的名为 MiniDumpWriteDump 的 MiniDumpCallbackRoutine 回调例程定义的内存。- 包括所有元数据(进程、线程、模块、句柄、地址空间等)。 |
-mk | 同样写入“内核”转储文件。 - 包括进程中线程的内核堆栈。 - 使用克隆 ( -r ) 时,OS 不支持内核转储 (-mk )。- 使用多个转储大小时,将针对每个转储大小进行内核转储。 |
条件:
条件 | 说明 |
---|---|
-a | 避免中断。 需要 -r 。 如果触发器会导致目标由于超出并发转储限制而长时间挂起,则将跳过该触发器。 |
-at | 避免超时时中断。 在 N 秒取消触发器的收集。 |
-b | 将调试断点视为异常(否则忽略它们)。 |
-c | CPU 阈值,高于该阈值则创建进程转储。 |
-cl | CPU 阈值,低于该阈值则创建进程转储。 |
-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)。 使用克隆 (-r ) 时,OS 不支持内核转储 (-mk )。 警告:高并发值可能会影响系统性能。- Windows 7:使用反射。 OS 不支持 -e 。- Windows 8.0:使用反射。 OS 不支持 -e 。- Windows 8.1 及更高版本:使用 PSS。 支持所有触发器类型。 |
-s | 写入转储前的连续秒数(默认值为 10)。 |
-t | 进程终止时写入转储。 |
-u | 处理相对于单核的 CPU 使用率(与 -c 配合使用)。 |
-v | DEBUG ONLY:详细输出。 |
-w | 如果指定的进程未运行,请等待启动。 |
-wer | 将(最大的)转储排队到 Windows 错误报告。 |
-x | 使用可选参数启动指定的映像。 如果它是商店应用程序或包,ProcDump 将(仅)在下次激活时启动。 |
-y | HIDDEN:商店应用程序激活。 |
-64 | 默认情况下,在 64 位 Windows 上运行时,ProcDump 将捕获 32 位进程的 32 位转储。 此选项会替代以创建 64 位转储。 仅用于 WOW64 子系统调试。 |
许可协议:
使用 -accepteula
命令行选项自动接受 Sysinternals 许可协议。
自动终止:
-cancel <Target Process PID>
使用此选项或设置名称为 ProcDump-<PID>
的事件与键入 Ctrl+C 正常终止 ProcDump 相同。 正常终止可确保在捕获处于活动状态时恢复进程。 取消适用于监视进程的所有 ProcDump 实例。
文件名:
默认转储文件名:PROCESSNAME_YYMMDD_HHMMSS.dmp
支持以下替换:
替换 | 说明 |
---|---|
PROCESSNAME | 进程名 |
PID | 进程 ID |
EXCEPTIONCODE | 异常代码 |
YYMMDD | 年/月/日 |
HHMMSS | 小时/分钟/秒 |
示例
写入名为“notepad”的进程的小型转储(只能存在一个匹配项):
C:\>procdump notepad
写入 PID 为“4572”的进程的完整转储:
C:\>procdump -ma 4572
首先写入小型转储,然后使用 PID“4572”写入进程的完整转储:
C:\>procdump -mm -ma 4572
在名为“notepad”的进程中每隔 5 秒写入 3 个小型转储:
C:\>procdump -n 3 -s 5 notepad
当名为“consume”的进程超过 20% CPU 使用率 5 秒时,最多写入 3 个小型转储:
C:\>procdump -n 3 -s 5 -c 20 consume
当其中一个窗口未响应超过 5 秒时,写入名为“hang.exe”的进程的小型转储:
C:\>procdump -h hang.exe
当其中一个窗口未响应超过 5 秒时,写入名为“hang.exe”的进程的完整或内核转储:
C:\>procdump -ma -mk -h hang.exe
当系统总 CPU 使用率超过 20% 持续 10 秒时,写入名为“outlook”的进程的小型转储:
C:\>procdump outlook -s 10 -p "\Processor(_Total)\% Processor Time" 20
当 Outlook 的句柄计数超过 10,000 时,写入名为“outlook”的进程的完整转储:
C:\>procdump -ma outlook -p "\Process(Outlook)\Handle Count" 10000
当句柄计数超过 10,000 时,写入“svchost”PID 1234、实例 #87 的完整转储:
C:\>procdump -ma 1234 -p "\Process(svchost#87)\Handle Count" 10000
注意:多实例计数器
如果计数器有多个实例,则需要包含名称和/或实例编号。\Processor(NNN)\% Processor Time \Thermal Zone Information(<name>)\Temperature \Process(<name>[#NNN])\<counter>
旧版 OS 要求附加
\Process
计数器的 PID。\Process(<name>[_PID])\<counter>
提示:使用性能监视器查看计数器(尤其是区分大小写)。
提示:对于基于\Process(*)
的计数器,使用 PowerShell 将 PID 映射到其#NNN
。Get-Counter -Counter "\Process(*)\ID Process"
为第 2 次异常写入完整转储:
C:\>procdump -ma -e w3wp.exe
为第 1 次和第 2 次异常写入完整转储:
C:\>procdump -ma -e 1 w3wp.exe
为调试字符串消息写入完整转储:
C:\>procdump -ma -l w3wp.exe
为 w3wp.exe 的每个第 1 次或第 2 次异常写入最多 10 个完整转储:
C:\>procdump -ma -n 10 -e 1 w3wp.exe
如果异常的代码/名称/消息包含“
NotFound
”,则最多写入 10 个完整转储:C:\>procdump -ma -n 10 -e 1 -f NotFound w3wp.exe
如果调试字符串消息包含“
NotFound
”,则最多写入 10 个完整转储:C:\>procdump -ma -n 10 -l -f NotFound w3wp.exe
等待名为“记事本”的进程(并监视其是否有异常):
C:\>procdump -e -w notepad
启动名为“记事本”的进程(并监视其是否有异常):
C:\>procdump -e -x c:\dumps notepad
注册以启动并尝试激活商店“应用程序”。 激活后,新的 ProcDump 实例将启动:
C:\>procdump -e -x c:\dumps Microsoft.BingMaps_8wekyb3d8bbwe!AppexMaps
注册以启动应用商店“包”。 激活后,新的 ProcDump 实例将(手动)启动:
C:\>procdump -e -x c:\dumps Microsoft.BingMaps_1.2.0.136_x64__8wekyb3d8bbwe
当 Microsoft Exchange 信息存储具有未经处理的异常时,将写入小型增强转储:
C:\>procdump -mp -e store.exe
无需写入转储即可显示 w3wp.exe 的异常代码/名称:
C:\>procdump -e 1 -f "" w3wp.exe
Windows 7/8.0;使用反射可减少 5 个连续触发器的中断:
C:\>procdump -r -ma -n 5 -s 15 wmplayer.exe
Windows 8.1+;使用 PSS 减少 5 个并发触发器的中断:
C:\>procdump -r 5 -ma -n 5 -s 15 wmplayer.exe
将 ProcDump 作为 (AeDebug) 事后调试器安装:
C:\>procdump -ma -i c:\dumps
..或..
C:\Dumps>procdump -ma -i
将 ProcDump 作为 (AeDebug) 事后调试器卸载:
C:\>procdump -u
请参阅示例命令行列表(示例在上面列出):
C:\>procdump -? -e
相关链接
- Windows Internals 书籍:关于 Windows Internals 的权威性书籍的官方更新和勘误页,由 Mark Russinovich 和 David Solomon 编写。
- Windows Sysinternals 管理员参考:Mark Russinovich 和 Aaron Margosis 编写的 Sysinternals 实用工具官方指南,其中包含各项工具的说明、其功能、如何使用这些工具进行故障排除,以及它们的实际使用示例。
下载 ProcDump (714 KB)
下载 ProcDump for Linux (GitHub)
下载 ProcDump for Mac (GitHub)
运行平台:
- 客户端:Windows 8.1 及更高版本。
- 服务器:Windows Server 2012 及更高版本。
了解更多
- Defrag Tools:#9 - ProcDump 本集 Defrag Tools 介绍该工具捕获的内容和预期的中断持续时间
- 碎片整理工具:#10 - ProcDump - 触发器 本集涵盖了触发器选项,特别是第 1 几率和第 2 几率异常
- 碎片整理工具:#11 - ProcDump - Windows 8 与进程监视器 本集涵盖了新型应用程序支持和进程监视器日志记录支持