- 工具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
) 。
- 使用多个转储大小时,将针对每个转储大小进行内核转储
-
条件说明:文章来源地址https://www.toymoban.com/news/detail-420681.html
-
条件 说明 -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 Treat 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
-
当系统 CPU 使用率持续 5 秒超过 70% 时,连续抓 3 个 Full Dump
- windbg分析:
- 将生成的dmp文件,使用windbg工具进行分析
文章来源:https://www.toymoban.com/news/detail-420681.html
到了这里,关于01-windows调试工具(ProcDump使用)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!