ProcDump 学习笔记(6.5):指定转储文件路径与命名策略
ProcDump 学习笔记(6.5):指定转储文件路径与命名策略
- ProcDump 学习笔记(6.5):指定转储文件路径与命名策略
- 1)最常用的两种写法
- A. 直接指定“单个文件”的完整路径
- B. 指定“输出目录”,让 ProcDump 自动命名
- 2)常见路径参数与小技巧
- 覆盖已存在文件:`-o`
- 同时控制“数量”与“目录”:`-n` + 目录
- 启动并监控一个新进程,同时指定目录(等价“启动目标进程”的写法)
- 3)路径写法的最佳实践
- 4)常见组合示例速查
- 5)FAQ:我到底该用“文件名”还是“目录”?
- 6)故障排查清单(与路径相关)
- 7)要点回顾
本文延续“第6章 ProcDump”系列,聚焦转储文件的保存路径与命名。命令示例基于 ProcDump 常见语法;不同版本细节可能略有差异,请以
procdump -?的本机输出为准。
ProcDump 学习笔记(6.5):指定转储文件路径与命名策略
1)最常用的两种写法
A. 直接指定“单个文件”的完整路径
当你已经确定只需要生成一个 dump 文件,最直观的做法是在命令末尾给出完整文件名(含后缀 .dmp):
:: 对 PID 1234 触发一次完整内存转储(-ma),输出到固定文件
procdump -ma 1234 "D:\Dumps\MyApp_crash_1.dmp"
要点:
- 目标文件必须包含文件名(如
xxx.dmp),否则会被当作目录处理。 - 目标目录需存在且当前用户可写;否则会失败。
- 若同名文件已存在,ProcDump 默认不会覆盖(见下文
-o)。
B. 指定“输出目录”,让 ProcDump 自动命名
当你打算抓多次转储(例如配合 -n 生成多份、或长时间监控),更推荐给出目录,交给 ProcDump 自动命名:
:: 监控进程名,异常时(-e)抓取完整转储,文件保存到 D:\Dumps 目录
procdump -ma -e notepad.exe "D:\Dumps"
自动命名的一般规律(示例):
<进程名>_<PID>_<时间戳>.dmp(时间戳或序号便于区分多份 dump)
实际命名格式可能随版本演进略有不同;以你机器上的实际生成结果为准。
2)常见路径参数与小技巧
覆盖已存在文件:-o
如果你传的是“完整文件名”,而该文件已存在,默认会失败。想要直接覆盖,用:
procdump -ma -o 1234 "D:\Dumps\only_one.dmp"
建议:除非 CI/自动化场景明确需要,否则不推荐覆盖;更安全的方式是使用“目录 + 自动命名”。
同时控制“数量”与“目录”:-n + 目录
给目录配合 -n(最多抓几次)是实战最常见的组合:
:: 当抛异常(-e)时最多抓 3 份完整转储
procdump -ma -e -n 3 MyApp.exe "D:\Dumps\MyApp"
启动并监控一个新进程,同时指定目录(等价“启动目标进程”的写法)
当你让 ProcDump 拉起目标再监控(而不是附加到正在运行的进程),命令末尾同样可以给目录:
:: 启动记事本并在异常时抓 dump,输出目录 D:\Dumps
procdump -ma -e "D:\Dumps" notepad.exe
提示:不同版本在“目录位置”的书写顺序上都支持相对直观的“末尾给目录/文件”的形式。如果你不确定,
procdump -?的用法说明里会明确指出“最后一个位置参数是 Dump 文件或目录”。
3)路径写法的最佳实践
-
统一放到专用目录
建议集中放到如D:\Dumps\{AppName}\,便于权限管理与清理轮转。 -
路径要用引号
目录/文件名包含空格时务必加引号:procdump -ma 1234 "D:\Dump Files\My App\crash_1.dmp" -
用环境变量做跨机适配
常用:%TEMP%、%USERPROFILE%、%ProgramData%等:procdump -ma 1234 "%ProgramData%\Dumps" -
网络路径与权限
可写到 UNC 共享(如\\srv\dumps),但注意目标共享的写权限与网络抖动导致的失败。 -
磁盘空间与配额
完整转储(-ma)体积可能很大(与进程工作集有关)。长时间抓取或服务器场景,务必:- 使用“目录 + 自动命名”;
- 配合
-n(最多抓几次)、或上层的日志轮转策略; - 必要时换成 Miniplus(见 6.9)以平衡“体积/可读性”。
4)常见组合示例速查
:: ① 单次抓取到“固定文件名”,存在则覆盖
procdump -ma -o 4321 "D:\Dumps\MyApp_once.dmp":: ② 异常触发,最多抓 5 份,自动命名到目录
procdump -ma -e -n 5 MyApp.exe "D:\Dumps\MyApp":: ③ CPU 飙高(>80% 且持续 10 秒)才抓,自动命名到目录
procdump -ma -c 80 -s 10 1234 "D:\Dumps\HotCPU":: ④ 启动目标进程并监控,异常即抓,输出到目录
procdump -ma -e "D:\Dumps\Notepad" notepad.exe:: ⑤ 与“等待进程出现”结合(服务/批处理常用)
procdump -ma -w MyService.exe -e -n 1 "D:\Dumps\Svc"
说明:
-c是 CPU 阈值(%),-s是持续秒数;-w表示“等待某进程出现再附加”。
5)FAQ:我到底该用“文件名”还是“目录”?
- 只想立刻抓一份、并发环境很可控 → 文件名更直观;
- 会抓多份、或要长时间驻留监控 → 目录 + 自动命名更稳妥(建议首选);
- 需要复用同一文件名做覆盖(自动化流水线) →
-o + 文件名,但注意并发冲突与误覆盖。
6)故障排查清单(与路径相关)
- 找不到路径:目录不存在/权限不足 → 先
mkdir,或换到%ProgramData%、D:\Dumps等可写盘符。 - 生成 0KB 或异常中断:磁盘空间不足/网络共享不稳定 → 改本地盘、或切换 Miniplus。
- 命令报错但没提示细节:先在管理员命令行下执行
procdump -?确认语法,再逐项精简参数定位问题。
7)要点回顾
- 末尾参数支持“文件”或“目录”;多份转储强烈推荐“目录 + 自动命名”。
- 用
-o可覆盖同名文件;用-n限制最大份数,配合长时间监控更安全。 - 把路径放进引号、选用稳定/可写的盘符,留足磁盘空间,是成功率的关键。
下一篇预告:我们将进入“6.6 指定创建转储的条件”,把 CPU、内存、异常、窗口挂起等触发条件逐一拆解,并给出可直接套用的命令模板。
