Windows随机崩溃时如何捕获进程转储
57243
Created On 05/22/22 12:47 PM - Last Modified 07/13/23 07:53 AM
Objective
在进程随机崩溃的情况下,我们需要使用捕获随机进程转储的专用工具
过程转储是Microsoft Sys 内部工具我们可以为此使用
Environment
- 视窗 OS
- 故障排除场景CortexXDR进程崩溃的地方
Procedure
下载 Procdump微软产品转储
当您执行后续步骤时,Procdump 将在崩溃时自动转储进程的内存(完整进程转储)。
- 为转储创建一个文件夹
- 从 procdump.exe 所在的位置运行下一个命令: procdump -ma -i <要转储到的文件夹>
例如: procdump -ma -i c:\转储
- procdump 命令将 procdump 设置为在出现未处理的异常(崩溃)时运行。
- 这意味着每当任何进程崩溃时,都会获取该进程的转储并将其保存在提供的路径中。
Additional Information
Palo Alto 不支持该工具,以防客户不知道此工具来捕获进程转储。
用法:procdump [-a] [[-c|-clCPU usage] [-u] [-s seconds]] [-n exceeds] [-e [1 [-b]] [-f <filter,...>] [-g] [-h] [-l] [-m|-ml 提交用法] [-ma | -mp] [-o] [-p|-pl 计数器阈值] [-r] [-t] [-d <回调DLL>] [-64] <[-w] <进程名称或服务名称或PID> [转储文件] | -i <转储文件> | -你 | -x <转储文件> <图像文件> [参数] >] [-? [-e]
| 范围 | 描述 |
| -A | 避免停电。 需要 -r。 如果触发器将导致目标由于超过并发转储限制而长时间挂起,则将跳过触发器。 |
| -在 | 避免超时中断。 取消触发器的收集N秒。 |
| -b | 将调试断点视为异常(否则忽略它们)。 |
| -C | CPU 创建进程转储的阈值。 |
| -cl | CPU 低于此阈值创建进程转储。 |
| -d | 调用指定的名为 MiniDumpCallbackRoutine 的小型转储回调例程DLL. |
| -e | 当进程遇到未处理的异常时写入转储。 包括 1 以在第一次机会异常时创建转储。 |
| -F | 过滤第一次机会异常。 支持通配符 (*)。 要仅显示名称而不转储,请使用空白 ("") 过滤器。 |
| -fx | 过滤(排除)异常和调试日志记录的内容。 支持通配符。 |
| -G | 在托管进程中作为本机调试器运行(无互操作)。 |
| -H | 如果进程有一个挂起的窗口(至少 5 秒内不响应窗口消息),则写入转储。 |
| -我 | 安装 ProcDump 作为 AeDebug 事后调试器。 仅支持 -ma、-mp、-d 和 -r 作为附加选项。 |
| -k | 克隆 (-r) 后或转储收集结束时终止进程 |
| -l | 显示进程的调试日志。 |
| -m | 内存提交阈值MB在其中创建转储。 |
| -嘛 | 写一个包含所有进程内存的转储文件。 默认转储格式仅包括线程和句柄信息。 |
| -mc | 编写自定义转储文件。 包括由指定的 MINIDUMP_TYPE 掩码(十六进制)定义的内存。 |
| -MD | 编写回调转储文件。 包括由指定的名为 MiniDumpCallbackRoutine 的 MiniDumpWriteDump 回调例程定义的内存DLL. |
| -mk | 还要写一个内核转储文件。 包括进程中线程的内核堆栈。 OS 使用克隆 (-r) 时不支持内核转储 (-mk)。 使用多个转储大小时,将为每个转储大小获取一个内核转储。 |
| -毫升 | 当内存提交低于指定值时触发MB价值。 |
| -毫米 | 写一个小型转储文件(默认)。 |
| -mp | 写一个包含线程和句柄信息的转储文件,以及所有读/写进程内存。 为了最小化转储大小,搜索大于 512MB 的内存区域,如果找到,则排除最大的区域。 A 内存区域是相同大小的内存分配区域的集合。 删除此(缓存)内存可减少 Exchange 和SQL服务器转储超过 90%。 |
| -n | 退出前要写入的转储数。 |
| -o | 覆盖现有的转储文件。 |
| -p | 超过阈值时在指定的性能计数器上触发。 注意:要在有多个进程运行实例时指定进程计数器,请使用进程ID使用以下语法:“\Process(<name>_<pid>)\counter” |
| -pl | 当性能计数器低于指定值时触发。 |
| -r | 使用克隆转储。 并发限制是可选的(默认 1,最大 5)。 CAUTION:高并发值可能会影响系统性能。 - Windows 7:使用反射。 OS 不支持-e。 - Windows 8.0:使用反射。 OS 不支持-e。 - Windows 8.1+:使用PSS. 支持所有触发器类型。 |
| -s | 写入转储前的连续秒数(默认为 10)。 |
| -t | 当进程终止时写一个转储。 |
| -u | 对待CPU相对于单个核心的用法(与 -c 一起使用)。 作为唯一的选择,卸载 ProcDump 作为事后调试器。 |
| -w | 如果指定的进程未运行,请等待它启动。 |
| -wer | 将(最大的)转储排队到 Windows 错误报告。 |
| -X | 使用可选参数启动指定图像。 如果它是一个商店应用程序或包,ProcDump 将在下次激活时启动(仅)。 |
| -64 | 默认情况下,当在 64 位 Windows 上运行时,ProcDump 将捕获 32 位进程的 32 位转储。 此选项覆盖以创建 64 位转储。 仅用于 WOW64 子系统调试。 |
| -? | 使用 -? -e 查看示例命令行。 |
ProcDump 选项标志: