程序如何打Dump文件

🧐 为什么要创建和分析 Dump 文件?

创建和分析 Dump 文件,主要是为了解决真正导致服务停摆或崩溃的疑难杂症,例如:

  • 进程崩溃 (Crash) :当WMS或windows_exporter进程因内存访问冲突(如 0xc0000005 错误)、未处理的异常等原因意外终止时。

  • 进程挂起 (Hang):进程仍在运行但无响应,对任何请求都停止反应。Dump 可以揭示它卡在了哪个函数或锁上。

  • 高内存占用 (High Memory Usage):分析堆(Heap)中对象的类型和数量,快速定位是哪个模块或业务逻辑导致了内存泄漏。

  • 高 CPU 占用 (High CPU Usage):通过查看即时线程的调用栈,分析是哪个函数在执行耗时操作。

🛠️ 手动诊断工具 (适用于进程运行缓慢或无响应)

这些方法主要用于对正在运行的进程进行即时"体检"。

工具 操作方法 适用场景与说明
任务管理器 (Task Manager) 1. 打开任务管理器,进入 "详细信息" 选项卡。 2. 右键点击目标进程,选择 "创建转储文件"。 优点 :最方便,系统自带。 缺点:只能生成 Full Dump,文件较大,且生成时进程会短暂挂起。
Process Explorer 1. 下载并运行 Process Explorer (来自微软官方)。 2. 右键点击目标进程,选择 "Create Dump" ,然后选择 "Create Full Dump"。 优点:比任务管理器更强大,功能更丰富,可以看作是任务管理器的"专业升级版"。
ProcDump (按需手动) 以管理员身份 打开 命令提示符 (CMD) ,定位到 procdump.exe 所在目录,执行命令按需抓取。 优点 :灵活性极高,可按需抓取,且不会终止进程。 缺点:需要下载,并使用命令行操作。

崩溃时自动抓取 (适用于进程随机崩溃)

如果你面对的问题是进程会不定时、随机地崩溃退出 ,手动抓取根本来不及,那么设置自动抓取就是唯一有效的方法。

Linux下教程

复制代码
procdump -M 2048 -n 3 -s 3 <PID或进程名>

WIndows下教程

1.下载ProcDump

Windows: 下载并解压到服务器

2.打Dump

2.1 根据内存阈值打Dump

复制代码
procdump -ma -m 1024 -n 3 -s 10 <PID或进程名> -o C:\dumps\
  • -ma:生成完整内存转储(推荐用于全面分析)。
  • -m 1024:内存超过 1024MB 时触发。

  • -n 3:最多生成 3 个 Dump。

  • -s 10:持续 10 秒超过阈值才触发。

  • -o:指定 Dump 输出目录(默认当前目录)。

2.2 根据CPU阈值打Dump

复制代码
procdump -ma -c 90 -n 3 -s 10 <PID或进程名> -o C:\dumps\
  • -c <百分比> :CPU 使用率阈值(如 -c 80 表示 CPU ≥ 80% 时触发)。

  • -s <秒>:连续超过阈值多少秒后触发(避免瞬时波动误触发)。

  • -n <次数>:最多生成的 Dump 文件数量(默认无限制)。

  • -ma:生成完整内存转储(推荐用于全面分析)。

  • -o:指定 Dump 输出目录(默认当前目录)。

eg:

在cmd窗口输入:

D:\Procdump\procdump.exe -ma -m 10240 -n 3 -s 10 8880 -o D:\Procdump\ 回车

不要关闭命令窗口,当进程 PID 8880内存达到 10240M 时,打3次dump自动保存在目录D:\Procdump\ 下.

相关推荐
小羊没烦恼!11 小时前
在Scrum中实施敏捷建模
java·开发语言·windows·算法·c#
Lost of 程序猿12 小时前
建造者模式实战:告别“十参数构造函数“的数据导出任务
后端·设计模式·c#·asp.net
mudtools13 小时前
在.NET现有系统中快速集成飞书任务分配能力
后端·c#·.net
工具派16 小时前
Word文档太大怎么拆分?段落结构与两种拆法的边界实测
开发语言·c#·word
潜龙952717 小时前
需求文档一键变测试用例:手工用例智能生成平台
开发语言·c#
Lost of 程序猿17 小时前
命令模式实战:把“下单后的动作“打包成可执行的任务
后端·设计模式·c#·asp.net·命令模式
淡海水17 小时前
16-01-C#数据结构源码-附录A-术语表
unity·c#·游戏引擎·il2cpp
小羊没烦恼!17 小时前
【译】利用Asp.net MVC处理文件的上传下载
开发语言·缓存·c#·word·powerpoint·.net
波力海苔夹心脆67518 小时前
C# 海康威视摄像头二次开发入门:HCNetSDK 登录、实时预览、云台控制、录像与抓图(WinForms 实战)
开发语言·windows·经验分享·tcp/ip·c#
淡海水18 小时前
16-03-C#数据结构源码-附录C-参考资源
unity·c#·游戏引擎·il2cpp