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

ProcDump 学习笔记(6.9):MiniPlus 转储(-mp)——轻量却够用的现场证据

ProcDump 学习笔记(6.9):MiniPlus 转储(-mp)——轻量却够用的现场证据

  • ProcDump 学习笔记(6.9):MiniPlus 转储(-mp)——轻量却够用的现场证据
    • 1)什么是 MiniPlus(`-mp`)?
    • 2)MiniPlus vs Full(复习要点)
    • 3)何时优先用 MiniPlus?
    • 4)上手即用:命令模板
      • 4.1 按异常触发(未处理 / 首机会)
      • 4.2 假死 / 无响应(Hang)
      • 4.3 高 CPU(阈值 + 持续秒数)
      • 4.4 等待进程启动再附加
    • 5)分析建议(WinDbg / VS / dotnet-dump)
      • 5.1 原生进程(WinDbg)
      • 5.2 .NET 进程(WinDbg + SOS / dotnet-dump)
      • 5.3 Visual Studio
    • 6)常见组合策略(从 MiniPlus 到 Full 的“升阶”)
    • 7)避坑清单
    • 8)即抄即用:三套标准脚本
    • 9)小结

ProcDump 学习笔记(6.9):MiniPlus 转储(-mp)——轻量却够用的现场证据

承接 6.8 的“转储文件选型”。本篇聚焦 MiniPlus 转储-mp):它在“信息量”和“文件体积”之间的最佳平衡,是首轮排障最推荐的落点。


1)什么是 MiniPlus(-mp)?

  • MiniPlus 是 ProcDump 生成的一类 增强型迷你转储

    • 保留 线程/调用栈/寄存器、模块列表、句柄、加载/卸载模块记录、基本内存映射/统计信息 等;
    • 不包含 进程的全部虚拟地址空间(与 -ma Full Dump 相比大幅减小体积)。
  • 定位目标:先快速定性(谁卡住了、卡在哪层、涉及哪些模块/句柄/同步对象),为是否进一步抓 Full Dump 提供依据。

一句话:足以看清“发生了什么”和“卡在何处”,又不至于把磁盘打爆。


2)MiniPlus vs Full(复习要点)

维度MiniPlus(-mpFull(-ma
典型体积小(十几~数十 MB 量级,依目标而异)大(数百 MB~数 GB)
适合问题卡死/高 CPU/死锁/异常初筛托管/原生 堆问题、内存破坏、OOM 深挖
打开速度
建议定位顺序第一阶段第二阶段(必要时升级)

3)何时优先用 MiniPlus?

  • “假死/无响应(Hang)”:需要快速拿到所有线程栈,识别死锁/等待链。
  • “高 CPU 连续一段时间”:看是哪条线程/哪个函数热点。
  • 异常频发但体积受限:先用 MiniPlus 广撒网收线索,再对特定条件抓 Full。
  • 持续巡检/长期驻留:降低存储与传输成本。

4)上手即用:命令模板

4.1 按异常触发(未处理 / 首机会)

:: 未处理异常时抓 1 份增强迷你转储
procdump -e -n 1 -mp <PID> "D:\Dumps\Unhandled":: 首机会异常 + 关键词过滤(抓 1 份)
procdump -e 1 -f "NullReferenceException|AccessViolation" -n 1 -mp <PID> "D:\Dumps\FirstChance"

4.2 假死 / 无响应(Hang)

:: 发现窗口无响应即抓 1 份 MiniPlus
procdump -h -n 1 -mp <进程名> "D:\Dumps\Hang"

4.3 高 CPU(阈值 + 持续秒数)

:: CPU 连续 15 秒 > 85% 才触发,避免误报
procdump -c 85 -s 15 -n 1 -mp <PID> "D:\Dumps\HighCPU"

4.4 等待进程启动再附加

:: 目标进程启动后再附加监听(仅抓 1 份)
procdump -w MyApp.exe -n 1 -mp "D:\Dumps\OnStart"

小技巧:永远带上 -n(份数限制),并把输出目录指向数据盘且按应用/场景分目录:
D:\Dumps\{AppName}\{Scenario} 便于隔离与轮换清理。


5)分析建议(WinDbg / VS / dotnet-dump)

MiniPlus 的目标是快速定性,所以分析的切入点也以“调用栈与等待关系”为核心。

5.1 原生进程(WinDbg)

  • !analyze -v:快速总览异常/挂起信息
  • ~* k遍历全部线程栈,找热点/阻塞点
  • !locked!critsec!locks(视扩展/符号):查看临界区/锁占用
  • !handle -a:句柄分布,辅助定位句柄泄漏或对象占用

5.2 .NET 进程(WinDbg + SOS / dotnet-dump)

  • !clrstack / !pe / !threadpool:线程/托管栈/线程池状态
  • !syncblk:托管锁等待(死锁/长等待)
  • dotnet-dump analyzethreads / clrstack:简化托管场景

注意:MiniPlus 不含完整托管堆,针对 GC/OOM/大对象 的深挖需切 Full(见 6.8)。

5.3 Visual Studio

  • 直接打开 .dmp,看“诊断摘要 / 线程栈 / 模块 / 异常”即可完成 80% 初筛。

6)常见组合策略(从 MiniPlus 到 Full 的“升阶”)

  1. 第一轮

    • -mp + 触发条件(异常/高 CPU/假死)+ -n 1
    • 快速看线程栈、模块、句柄、等待链,收敛原因。
  2. 第二轮(必要时)

    • 针对已锁定问题(如 OOM/堆损坏/复杂缓存损坏)改抓 -ma只抓一次,避免爆盘。
  3. 管控

    • 始终控制份数与目录容量,必要时配合计划任务做 历史清理

7)避坑清单

  • 位宽匹配:64 位进程优先用 procdump64.exe;32 位进程用 procdump.exe
  • 符号配置:分析时别忘了正确的符号服务器(如 srv*D:\Symbols*https://msdl.microsoft.com/download/symbols)。
  • 隐私合规:MiniPlus 通常不含整个地址空间,但仍可能包含敏感数据片段——限制访问加密传输按需保留
  • 触发去噪:用 -c/-s(CPU 连续 N 秒)或异常过滤 -f 降低误触发。

8)即抄即用:三套标准脚本

:: (A)未处理异常——首轮排障
procdump -e -n 1 -mp <PID> "D:\Dumps\Unhandled":: (B)高 CPU 连续 10 秒
procdump -c 90 -s 10 -n 1 -mp <进程名> "D:\Dumps\HighCPU":: (C)窗口无响应(Hang)
procdump -h -n 1 -mp <PID> "D:\Dumps\Hang"

9)小结

  • MiniPlus(-mp)= 首轮排障的首选:体积小、信息够、见效快。
  • -mp 定性,再 -ma 定点深挖(必要时)。
  • 搭配 精准触发(异常/CPU/假死)与 份数限制-n),把控稳定性与磁盘成本。

下一篇(6.10)我们将实战 ProcDump × Procmon 的联动:让 Procmon 帮你“圈住关键时刻/关键进程/关键操作”,再由 ProcDump 精准落点抓转储,形成可复现可回溯的闭环定位流程。

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

相关文章:

  • 特乐网站建设如何用源码搭建网站源码
  • Java 大视界 -- Java 大数据实战:分布式架构重构气象预警平台(2 小时→2 分钟)(428)
  • 洗牌算法讲解——力扣384.打乱数组
  • 芋道源码:VUE3部署:避坑--验证码不现显示,管理后台无法访问后端接口等,完善中。。。
  • 前端速通—ajax篇
  • 济南建立网站湖南建筑工程信息平台
  • android 堆栈打印
  • 太原网站优化排名北京互联网排名
  • 2025-web集群-问题总结
  • CATWIFI
  • 智能旅行助手Agent实战:前后端分离的多Agent系统
  • java基础-练习
  • nginx 配置超时时间
  • apache 配置超时时间
  • 网站开发工作时间个人网页设计作品及设计理念
  • 【Android】View 事件分发机制与源码解析
  • AIGC(生成式AI)试用 38 -- 程序(Python + OCR)-1
  • s001网站建设设计微信营销网络营销方式
  • #PCIE#《PCIE P2P 传输那点事儿》
  • HTTP | 跨域 - 知识点总结
  • 解决[PM2][ERROR] Script not found: D:\projects\xxx\start
  • 开发一款连接带有GEM/SECS协议软件的设备(一)
  • 大连微信网站开发app软件开发培训班
  • 同仁微网站建设工作室微信辅助网站制作
  • FFmpeg 基本数据结构 AVPacket分析
  • Linux at命令详解:轻松调度延迟任务
  • 线程停止、休眠、礼让、强制执行、观测线程状态
  • 复盘|嵌入式Linux驱动开发之I2C子系统
  • AI Agent常用的RAG有哪些种,分别适用于什么情况
  • 对中兴光猫zteOnu.exe项目的简单分析(提供下载地址)