程序如何打Dump文件

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

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

  • 进程崩溃 (Crash) :当WMSwindows_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\ 下.

相关推荐
魔法阵维护师10 小时前
从零开发游戏需要学习的c#模块,第二十八章(血条显示 —— 敌人与玩家生命可视化)
学习·游戏·c#
步步为营DotNet11 小时前
解密.NET 11:C# 14 在客户端响应式编程的突破与实践
microsoft·c#·.net
程序leo源11 小时前
Qt界面优化详解
linux·c语言·开发语言·c++·qt·c#
周杰伦fans12 小时前
C# LINQ 排序详解 —— OrderBy / OrderByDescending / ThenBy / ThenByDescending
开发语言·c#·linq
雪豹阿伟12 小时前
13.C# —— 哈希表、排序列表、访问修饰符与属性拦截、构造/析构函数
c#·上位机
JaydenAI12 小时前
[MAF预定义ChatClient中间件-05]动态修改对话配置的两种解决方案
ai·c#·agent·maf·chatclient管道
IronMurphy12 小时前
AI Agent 学习day4 从 RAG 检索到 Function Call:一文理解大模型问答系统的完整链路
人工智能·学习·c#
爱学习的程序媛12 小时前
C 语言全景指南:从底层原理到工业级实战
c++·c#·c
魔法阵维护师12 小时前
从零开发游戏需要学习的c#模块,第二十九章(经验值与升级系统)
学习·游戏·c#