当前位置: 首页 > news >正文

ProcDump 学习笔记(6.11):以非交互方式运行 ProcDump(服务器/生产环境指南)

ProcDump 学习笔记(6.11):以非交互方式运行 ProcDump(服务器/生产环境指南)

  • ProcDump 学习笔记(6.11):以非交互方式运行 ProcDump(服务器/生产环境指南)
    • 1)为什么一定要“非交互”?
    • 2)非交互运行的常用触发场景
    • 3)一键后台采集:任务计划(Task Scheduler)模板
      • 3.1 目录与 EULA 预处理(一次性)
      • 3.2 高 CPU 自动抓(随系统启动)
      • 3.3 假死自动抓(随系统启动)
      • 3.4 异常自动抓(随系统启动)
    • 4)按“事件日志”触发(进阶)
    • 5)自动清理与容量保护(强烈建议)
    • 6)无人值守部署脚本(可抄可改)
    • 7)权限、位宽、性能与安全:上线前必读
    • 8)与 6.5 “AeDebug” 的关系
    • 9)最小可用清单(Checklist)
      • 小结

ProcDump 学习笔记(6.11):以非交互方式运行 ProcDump(服务器/生产环境指南)

面向服务器/生产环境的“无人值守”抓 Dump 方案:开机自启、按条件触发、限额落盘、自动清理、权限与安全一次配齐。本文给你可直接上线的任务计划批处理/PowerShell 模板最佳实践清单


1)为什么一定要“非交互”?

  • 生产环境禁止远程桌面常驻,也不可能守在窗口前“等崩”。
  • 很多问题是瞬发偶发:高 CPU、假死、异常、启动即崩。
  • 目标是自动在恰当时刻抓到足够信息的 dump,同时不打爆磁盘不影响服务

2)非交互运行的常用触发场景

场景触发思路ProcDump 关键参数示例
高 CPUCPU 连续 N 秒超过阈值-c 85 -s 10 -n 1 -mp
假死(不响应)窗口挂起/无响应-h -n 1 -mp
异常(未处理/首机会)进程抛异常-e(未处理) / -e 1 -f "关键字"(首机会+过滤)
启动即崩进程刚起来就异常-w app.exe -e -n 1(等待启动+异常触发)
定点巡检固定窗口抓取一次现场任务计划在时间窗内触发

MiniPlus(-mp足够完成大多数首次诊断;如果需要看托管大堆/内存对象,再升级 Full(-ma,但务必限量(-n 1)以防爆盘。


3)一键后台采集:任务计划(Task Scheduler)模板

3.1 目录与 EULA 预处理(一次性)

@echo off
set "DUMP_DIR=D:\Dumps\MyApp"
mkdir "%DUMP_DIR%" 2>nulrem 静默接受 Sysinternals EULA(无人值守必备)
procdump -accepteula >nul 2>&1

3.2 高 CPU 自动抓(随系统启动)

schtasks /Create /RU "SYSTEM" /RL HIGHEST ^/SC ONSTART /TN "ProcDump-HighCPU-MyApp" ^/TR "cmd /c procdump -c 85 -s 10 -n 1 -mp -w MyApp.exe %DUMP_DIR%\HighCPU" ^/F
  • 含义:开机后,后台等待 MyApp.exe,若 CPU 连续 10 秒 ≥85%,抓 1 份 MiniPlus
  • 为何等进程名(-w:应对“启动慢/重启”的场景,无需你手工更新 PID。

3.3 假死自动抓(随系统启动)

schtasks /Create /RU "SYSTEM" /RL HIGHEST ^/SC ONSTART /TN "ProcDump-Hang-MyApp" ^/TR "cmd /c procdump -h -n 1 -mp -w MyApp.exe %DUMP_DIR%\Hang" ^/F

3.4 异常自动抓(随系统启动)

schtasks /Create /RU "SYSTEM" /RL HIGHEST ^/SC ONSTART /TN "ProcDump-Exception-MyApp" ^/TR "cmd /c procdump -e -n 1 -mp -w MyApp.exe %DUMP_DIR%\Crash" ^/F

首机会异常且仅抓指定异常:把 -e 换成 -e 1 -f "NullReferenceException|AccessViolation"


4)按“事件日志”触发(进阶)

当应用崩溃时,应用程序日志常写入固定事件(如 EventID=1000/1001)。可以用 ONEVENT 触发,做到仅“崩溃真正发生”才抓

最稳方式是导入任务计划 XML(含 XPath 查询)。下面给出一份可参考的片段(核心在 <QueryList>):

<!-- CrashOnEvent-MyApp.xml(节选) -->
<Triggers><EventTrigger><Enabled>true</Enabled><Subscription><![CDATA[
<QueryList><Query Id="0" Path="Application"><Select Path="Application">*[System[(EventID=1000)]] and *[EventData[Data[@Name='FaultingApplicationName']='MyApp.exe']]</Select></Query>
</QueryList>]]></Subscription></EventTrigger>
</Triggers>
<Principals><Principal id="Author"><RunLevel>HighestAvailable</RunLevel><UserId>S-1-5-18</UserId> <!-- SYSTEM --><LogonType>ServiceAccount</LogonType></Principal>
</Principals>
<Actions Context="Author"><Exec><Command>cmd.exe</Command><Arguments>/c procdump -e -n 1 -mp -w MyApp.exe D:\Dumps\MyApp\Event</Arguments></Exec>
</Actions>

导入命令:

schtasks /Create /TN "ProcDump-OnEvent-MyApp" /XML CrashOnEvent-MyApp.xml /F

5)自动清理与容量保护(强烈建议)

保留最近 N 份 + 按天清理,避免磁盘被 Dump 撑满:

# 保留最近 10 份,删除更旧的
$dir = 'D:\Dumps\MyApp'
Get-ChildItem $dir -Filter *.dmp |Sort-Object LastWriteTime -Descending |Select-Object -Skip 10 |Remove-Item -Force -ErrorAction SilentlyContinue

注册一个每日任务

schtasks /Create /RU "SYSTEM" /SC DAILY /TN "ProcDump-Cleanup-MyApp" ^/TR "powershell -NoProfile -Command ""& { $d='D:\Dumps\MyApp'; gci $d -Filter *.dmp | sort LastWriteTime -desc | select -skip 10 | ri -Force }""" ^/ST 03:30 /F

也可再加配额监控(阈值触发删除),或把 Dump 挪到独立数据盘


6)无人值守部署脚本(可抄可改)

@echo off
setlocal
set "APP=MyApp.exe"
set "DUMP_DIR=D:\Dumps\MyApp"mkdir "%DUMP_DIR%" 2>nul
procdump -accepteula >nul 2>&1rem 高 CPU
schtasks /Create /RU "SYSTEM" /RL HIGHEST /SC ONSTART /TN "ProcDump-HighCPU-%APP%" ^/TR "cmd /c procdump -c 85 -s 10 -n 1 -mp -w %APP% %DUMP_DIR%\HighCPU" /Frem 假死
schtasks /Create /RU "SYSTEM" /RL HIGHEST /SC ONSTART /TN "ProcDump-Hang-%APP%" ^/TR "cmd /c procdump -h -n 1 -mp -w %APP% %DUMP_DIR%\Hang" /Frem 未处理异常
schtasks /Create /RU "SYSTEM" /RL HIGHEST /SC ONSTART /TN "ProcDump-Exception-%APP%" ^/TR "cmd /c procdump -e -n 1 -mp -w %APP% %DUMP_DIR%\Crash" /Frem 每日清理(保留 10 份)
schtasks /Create /RU "SYSTEM" /SC DAILY /ST 03:30 /TN "ProcDump-Cleanup-%APP%" ^/TR "powershell -NoProfile -Command ""& { $d='%DUMP_DIR%'; gci $d -Filter *.dmp | sort LastWriteTime -desc | select -skip 10 | ri -Force }""" /Fecho Done. 任务已注册(SYSTEM)。请复现问题后检查 %DUMP_DIR%.
endlocal

7)权限、位宽、性能与安全:上线前必读

  • 权限:任务建议用 SYSTEM(最稳),最少也要具备访问目标进程写入 Dump 目录的权限。
  • 位宽匹配:64 位进程用 procdump64.exe(或在 64 位 OS 上用默认 procdump);跨位宽附加会失败。
  • 磁盘 IO:抓 Full Dump 对 IO/空间压力大,强制限流-n 1),能 -mp 就别 -ma
  • 目录规划:Dump 存储到独立数据盘或足够空间的卷;必要时临时映射 UNC 到档案服务器。
  • 隐私合规:Dump 可能含访问令牌/密码/配置/内存数据,严格权限、加密传输、限期保留
  • 叠加策略:同时跑“高 CPU + 假死 + 异常”没问题,但务必注意只抓一次-n 1)避免连环写盘。

8)与 6.5 “AeDebug” 的关系

  • AeDebug(后期调试器)进程崩溃时由系统调用 procdump 抓崩溃 Dump(“崩才抓”)。

  • 任务计划方案:不限于崩溃,能覆盖高 CPU、假死、启动即崩异常但未必 Crash 的场景。

  • 实战中常常两者并用

    • AeDebug 兜底“崩溃一定有 Dump”;
    • 任务计划保障“卡顿/高负载/瞬发问题也抓得到”。

9)最小可用清单(Checklist)

  • 已静默接受 EULA(procdump -accepteula
  • Dump 目录可写、在大容量盘并有清理策略
  • 根据问题类型选择 -c/-h/-e/-w 组合,一次只抓 1 份
  • 任务以 SYSTEM 运行,失败重试选项已开启(任务计划高级设置)
  • 联合 Procmon 记录时间线(见 6.10),方便对齐 Dump 发生时刻

小结

  • 非交互运行 ProcDump 的精髓是:合适触发(CPU/假死/异常/启动)、安全落盘自动清理与 Procmon 时间线对齐
  • 上面的模板可以直接落地;根据你的应用特性微调阈值与清理策略,就能在生产上稳妥地留住决定性证据

下一篇(6.12)我们将收尾:在调试器中打开与分析 Dump(WinDbg/VS),从线程栈、异常上下文到符号/源映射,给出一套快速出结论的走查清单。

http://www.dtcms.com/a/536768.html

相关文章:

  • yolov4和yolov5(yolov4的工业化)
  • 手写线程池第1弹:深入理解线程池:从原理到实战,手写高性能线程池的完整指南
  • 网站没有域名电子商务网站硬件建设的核心
  • 上海 松江 网站制作南通做网站
  • 如何在 Spring Boot 项目中使用 @Slf4j 注解结合 Logback 进行系统日志管理
  • SQLite 事务
  • 第 1 章 JVM 和 Java 体系架构_java 字节码
  • MarketUP营销自动化核心方法:从数据驱动到全链路增
  • 沙田镇仿做网站网站价格
  • 信创背景下,中职计算机网络专业人才培养方案探讨
  • 且网站制作开源系统有哪些
  • AR智能巡检:电力运维的“透视眼”与“超级大脑”
  • 漳州电脑网站建设西安市建设网
  • 从冷换仓到热追踪:项目方如何在不暴露风险的前提下守住主动权
  • 机器人运动控制中的 Actor-Critic 强化学习预训练
  • [人工智能-大模型-97]:大模型应用层 - 随着技术的发展,软件工程与软件开发过程提效演进阶段(工具化 → 流程化 → 智能化)和未来的展望。
  • Qt从入门到放弃学习之路(1)
  • QRingBuffer:Qt内部高效环形缓冲区
  • 单位如何做网站宣传高端网站建设专业营销团队
  • 建设企业网站步骤上海做网站的公司是什么
  • 系统接口对接如何设计预防处理系统异常?
  • LeetCode算法日记 - Day 85: 等差数列划分
  • Maven相关
  • 京东商品视频API:通过商品id商品链接获取商品的视频url
  • Maven快速上手笔记
  • 手机免费制作网站模板免费下载台州网站公司那里好
  • 企业网站哪家好网站流量超标
  • 钢结构网站建设网站建设必备
  • 数据分析综合应用实战:从统计分析到机器学习预测
  • 网站 源码 下载色无极网站正在建设中