ProcDump v11.0
作者:Mark Russinovich 和 Andrew Richards
发布时间:2022/11/03
下载 ProcDump (714 KB)
下载 ProcDump for Linux (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
转储类型:
转储类型 | 说明 |
---|---|
-毫米 | 写入“Mini”转储文件。 (默认值) - 包括直接或间接引用的内存 (堆栈及其) 引用的内容。 - 包括 (进程、线程、模块、句柄、地址空间等) 的所有元数据。 |
-马 | 写入“完整”转储文件。 - 包括所有内存 (映像、映射和专用) 。 - 包括 (进程、线程、模块、句柄、地址空间等) 的所有元数据。 |
-mt | 写入“会审”转储文件。 - 包括直接引用的内存 (堆栈) 。 - 包括有限的元数据 (进程、线程、模块和句柄) 。 - 尝试删除敏感信息,但不能保证。 |
-Mp | 编写“MiniPlus”转储文件。 - 包括所有专用内存和所有读/写映像或映射内存。 - 包括 (进程、线程、模块、句柄、地址空间等) 的所有元数据。 - 为了最小化大小,将排除超过 512MB 的最大专用内存区域。 内存区域定义为相同大小的内存分配的总和。 转储与完整转储一样详细,但大小为 10%-75%。 - 注意:由于调试限制,CLR 进程将转储为 Full (-ma) 。 |
-Mc | 写入“自定义”转储文件。 - 包括由指定的 MINIDUMP_TYPE 掩码 (十六进制) 定义的内存和元数据。 |
-Md | 编写“回调”转储文件。 - 包括由 MiniDumpWriteDump 指定 DLL 命名 MiniDumpCallbackRoutine 的回调例程定义的内存。- 包括 (进程、线程、模块、句柄、地址空间等) 的所有元数据。 |
-Mk | 此外,还要编写“内核”转储文件。 - 包括进程中线程的内核堆栈。 - 使用克隆 () -mk 时,OS 不支持内核转储 (-r ) 。- 使用多个转储大小时,将针对每个转储大小进行内核转储。 |
条件:
条件 | 说明 |
---|---|
-a | 避免中断。 需要 -r 。 如果触发器会导致目标由于超出并发转储限制而长时间挂起,则将跳过该触发器。 |
-在 | 避免超时时中断。 在几秒钟内 N 取消触发器的收集。 |
-b | 将调试断点视为异常, () 忽略它们。 |
-c | CPU 阈值高于该阈值,用于创建进程的转储。 |
-Cl | CPU 阈值低于该阈值,用于创建进程的转储。 |
-直流 | 将指定的字符串添加到生成的转储注释。 |
-e | 当进程遇到未经处理的异常时写入转储。 包括 以 1 在出现第一次机会异常时创建转储。添加 -ld 以在加载 DLL (模块) 时创建转储, (筛选) 应用。添加 -ud 以在卸载 DLL (模块) 时创建转储, (筛选) 应用。添加 -ct 以在创建线程时创建转储。添加 -et 以在线程退出时创建转储。 |
-f | 筛选器 (包括) 异常内容、调试日志记录和 DLL 加载/卸载时的文件名。 支持通配符 (*)。 |
-外汇 | 筛选器 (DLL 加载/卸载时排除异常内容、调试日志记录和文件名的) 。 支持通配符 (*)。 |
-g | 在托管进程中作为本机调试器运行, (无互操作) 。 |
-h | 如果进程有一个挂起的窗口, (至少 5 秒) 不响应窗口消息,则写入转储。 |
-k | 克隆 (-r ) 后或在转储收集结束时终止进程。 |
-l | 显示进程的调试日志记录。 |
-m | 创建转储的内存提交阈值(以 MB 为单位)。 |
-毫升 | 当内存提交低于指定的 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 | 处理与) 一起使用 -c 的单核 (CPU 使用率。 |
-v | 仅调试: 详细输出。 |
-w | 如果指定的进程未运行,请等待它启动。 |
-wer | 将 (最大的) 转储排队到Windows 错误报告。 |
-x | 使用可选参数启动指定的映像。 如果是应用商店应用程序或包,则 ProcDump 将在下次激活时启动, (仅) 。 |
-Y | 隐藏: 应用商店应用程序激活。 |
-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 | 小时/分钟/秒 |
示例
编写名为“记事本”的进程小型转储, () 只能存在一个匹配项:
C:\>procdump notepad
使用 PID“4572”编写进程的完整转储:
C:\>procdump -ma 4572
首先编写 Mini,然后编写 PID 为“4572”的进程的完整转储:
C:\>procdump -mm -ma 4572
在名为“记事本”的进程相隔 5 秒的间隔内写入 3 个小型转储:
C:\>procdump -n 3 -s 5 notepad
当名为“消耗”的进程超过 20% CPU 使用率 5 秒时,最多写入 3 个小型转储:
C:\>procdump -n 3 -s 5 -c 20 consume
当其中一个窗口无响应超过 5 秒时,为其名为“hang.exe”的进程编写 Mini 转储:
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 要求追加计数器的 PID
\Process
。\Process(<name>[_PID])\<counter>
提示:使用 性能监视器 查看计数器 (区分大小写) 。
提示: 对于\Process(*)
基于的计数器,请使用 PowerShell 将 PID 映射到其#NNN
。Get-Counter -Counter "\Process(*)\ID Process"
为第二次机会异常编写完整转储:
C:\>procdump -ma -e w3wp.exe
为第一次或第二次机会异常编写完整转储:
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
如果异常的代码/名称/msg 包含“”
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.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 内部书籍 由 Mark Russinovich 和 David Solomon 撰写的关于 Windows 内部的权威书籍的官方更新和勘误表页面。
- Windows Sysinternals 管理员参考 Mark Russinovich 和 Aaron Margosis 提供的 Sysinternals 实用工具官方指南,包括所有工具的说明、其功能、如何使用这些工具进行故障排除,以及示例实际使用案例。
下载 ProcDump (714 KB)
下载 ProcDump for Linux (GitHub)
运行时间:
- 客户端:Windows 8.1 及更高。
- 服务器:Windows Server 2012及更高。
了解更多
- 碎片整理工具:#9 - ProcDump 碎片整理工具的这一集介绍了该工具捕获的内容和预期的中断持续时间
- 碎片整理工具:#10 - ProcDump - 触发器 此剧集涵盖触发器选项,特别是第 1 次 & 第 2 次机会异常
- 碎片整理工具:#11 - ProcDump - Windows 8&进程监视器 本集介绍新式应用程序支持和进程监视器日志记录支持