使用windbg查看dump和排查问题


使用windbg查看dump和排查问题

1、安装与配置 windbg 的 symbol (符号)

1) 下载WinDBG https://dl.pconline.com.cn/download/770876.html

2) 双击下载的文件安装 windbg .安装时注意记住安装到那里了.

3) windbg 访问符号需要两个文件(SYMSRV.DLL 和 SYMSTORE.EXE)所以添加主 path 环境变量中它们的路径进去,即:你的 windbg 安装目录.

操作方法:在桌面我的电脑点右键--属性--高级--环境变量,在系统变量列表框中找到 path 双击,在变量值最后面加一个分号再把你的安装目录写上.点确定.
这一步是告诉 windbg 那两个文件放在什么地方.

4) 新建一个环境变量_NT_SYMBOL_PATH 值为: SRV*c:\mysymbol* http://msdl.microsoft.com/download/symbols

操作方法:桌面我的电脑点右键--属性--高级--环境变量 ,点击新建,把上面的变量名和变量值填上.这一步的意思是说告诉 windbg ,我的符号文件存放在c:\mysymbol 中(当然其实里面什么也没有,甚至这个文件夹也不存在,不过没关系,系统找不到的话会给你创建一个,并在上面的网址中去帮你下载符号文件放在里面)

5) 运行 windbg 打开一个DMP文件, 你会看到 Symbol search path is: SRV*c:\mysymbol* http://msdl.microsoft.com/download/symbols
6) 运行 .load C:\Windows\Microsoft.NET\Framework64\v4.0.30319\sos.dll 加载

打开c盘看到有一个新目录 mysymbol,里面有 windbg 新下载的文件.

2、使用windbg
1)运行 windbg 加载一个DMP文件
2)运行!analyze -v 用来查看异常是谁导致的
3)运行!runaway 查看各个线程的cpu使用时间
4)运行~21s 查看cpu使用时间异常的线程
5)运行!clrstack 查看该线程的调用堆栈信息 基本上到此已经可以看到问题代码

6)执行!dso 命令可以查看堆栈上的所有对象详细信息

其他常用命令:
!analyze -v 用来查看异常是谁导致的
kb 用来显示当前线程call stack(调用栈)的内容,它可以查看更详细的内存信息
~3 kb查看3号线程堆栈
~* k 用来查看所有的线程栈
~*e !clrstack
!locks 用来观察当前处于 临界区 的线程
!clrstack 用来检查CLR 的CALLSTACK.

posted @ 2022-09-28 18:03  microsoft_xin  阅读(576)  评论(0编辑  收藏  举报