作者:Mark Russinovich 和 Andrew Richards
发布时间: 2026 年 5 月 7 日
ProcDump(1.2 MB)
下载 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 | 创建“MiniPlus”转储文件。 - 包括所有专用内存和所有读/写映像或映射内存。 - 包括所有元数据(进程、线程、模块、句柄、地址空间等)。 - 为了使大小最小化,将排除超过 512MB 的最大专用内存区域。 内存区域定义为相同大小的内存分配的总和。 转储与完整转储一样详细,但其大小为完整转储的 10% 至 75%。 - 注意:由于调试的限制,CLR 进程会以完整转储 (-ma) 的方式被转储。 |
| -mc | 写入“自定义”转储文件。 - 包括由指定的 MINIDUMP_TYPE 掩码(十六进制)定义的内存和元数据。 |
| -md | 写入“回调”转储文件。 - 包括由指定 DLL 的名为 MiniDumpWriteDump 的 MiniDumpCallbackRoutine 回调例程定义的内存。- 包括所有元数据(进程、线程、模块、句柄、地址空间等)。 |
| -mk | 同样生成“内核转储”文件。 - 包括进程中线程的内核堆栈。 - 使用克隆 ( -mk) 时,OS 不支持内核转储 (-r)。- 使用多个转储大小时,将针对每个转储大小进行内核转储。 |
条件:
| 条件 | 说明 |
|---|---|
| -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)。 使用克隆 (-mk) 时,OS 不支持内核转储 (-r)。 警告:高并发值可能会影响系统性能。- Windows 7:使用反射。 OS 不支持 -e。- Windows 8.0:使用反射。 OS 不支持 -e。- Windows 8.1 及更高版本:使用 PSS。 支持所有触发器类型。 |
| -s | 转储写入前的连续秒数(默认值为 10)。 |
| -t | 在进程终止时生成转储文件。 |
| -u | 处理相对于单核的 CPU 使用率(与 -c 配合使用)。 |
| -v | 仅用于调试:详细输出。 |
| -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”的进程连续 5 秒的 CPU 使用率超过 20% 时,可生成最多 3 个小型转储:
C:\>procdump -n 3 -s 5 -c 20 consume当“hang.exe”进程的某个窗口未响应超过 5 秒时,生成该进程的小型转储。
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>旧版操作系统要求您附加
\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 的每个第一次或第二次机会异常生成最多 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 信息存储遭遇未经处理的异常时,写入 MiniPlus 转储:
C:\>procdump -mp -e store.exe无需生成转储文件即可显示 w3wp.exe 的异常代码/名称。
C:\>procdump -e 1 -f "" w3wp.exeWindows 7/8.0;使用反射技术以减少 5 个连续触发器导致的宕机:
C:\>procdump -r -ma -n 5 -s 15 wmplayer.exeWindows 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(1.2 MB)
下载 ProcDump for Linux (GitHub)
下载 ProcDump for Mac (GitHub)
运行平台:
- 客户端:Windows 11 及更高版本。
- 服务器:Windows Server 2016 及更高版本。
了解更多
- Defrag Tools:#9 - ProcDump 本集 Defrag Tools 介绍该工具捕获的内容和预期的中断持续时间
- 碎片整理工具:#10 - ProcDump - 触发器 本集介绍了触发器选项,特别是第一次机会异常和第二次机会异常
- 碎片整理工具:#11 - ProcDump - Windows 8 与进程监视器 本集涵盖了新型应用程序支持和进程监视器日志记录支持