用Windbg来分析.Net程序的dump
1. 什么是Windbg
WinDbg是微软发布的一款相当优秀的源码级(source-level)调试工具,可以用于Kernel模式调试和用户模式调试,还可以调试Dump文件。
WinDbg是微软很重要的诊断调试工具: 可以查看源代码、设置断点、查看变量, 查看调用堆栈及内存情况。
Dump文件是进程的内存镜像, 可以把程序的执行状态通过调试器保存到dump文件中
2. Windbg可以解决以下问题
◆ 内存高
◆ CPU高
◆ 程序异常
◆ 程序Hang死
3. 使用windbg进行调试分析的两种方式
使用windbg调试器attach到需要调试的进程。(会暂停进程的运行)
抓取进程的dump文件,使用windbg分析dump
下载地址:https://technet.microsoft.com/en-us/sysinternals/dd996900
下载之后为压缩包,将文件解压。通过dos命令来生成dump文件。下面为一条语句为示例
procdump -ma -c 0 -s 3 -n 2 sqlservr.exe -o E:\dumps\
这条语句的意思为:当sqkservr.exe这个进程运行时间cpu的占用超过0%,时间超过3秒,则在E:\dumps下生成一个dump文件。一直到生成2个为止。下面为命令介绍
-ma 生成full dump, 即包括进程的所有内存. 默认的dump格式包括线程和句柄信息.
-c 在CPU使用率到达这个阀值的时候, 生成dump文件.
-s CPU阀值必须持续多少秒才抓取dump文件.
-n 在该工具退出之前要抓取多少个dump文件.
-o dump文件保存目录.
Sqlservr.exe可替换为进程的ID