程序如何打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\ 下.

相关推荐
F202269748610 小时前
西门子 PLC 与 C# 通信
开发语言·c#
吴可可12315 小时前
C#实现CAD框选闭合图元外偏移1毫米
c#
꒰ঌ 安卓开发໒꒱15 小时前
.NET CAP入门到入土
后端·c#·.net
逝水无殇19 小时前
C# 枚举(Enum)详解
开发语言·后端·c#
Java面试题总结21 小时前
C# 源生成器使用方法
windows·ui·c#
影寂ldy21 小时前
C# WinForms 窗体继承
开发语言·c#
苍狼唤1 天前
WinForm练习知识补充(多线程)
c#
逝水无殇2 天前
C# 字符串(String)详解
开发语言·后端·c#
小巧的砖头2 天前
C#会重蹈覆辙吗?系列之2:反射及元数据的性能问题
开发语言·前端·c#
医疗信息化王工2 天前
从零到一:基于 GGUF 格式部署 Unlimited-OCR 搭建企业级证件识别服务
图像处理·c#·ocr