现在的位置: 首页 > 综合 > 正文

windbg符号表问题,曾经纠结的东东

2014年02月01日 ⁄ 综合 ⁄ 共 938字 ⁄ 字号 评论关闭

本篇文章参考链接:

http://bbs.pediy.com/showthread.php?t=107893 ,作者:dnapcex。

 windbg安装文件链接:下载地址

        最近在查找内存泄露时又偶遇windbg,依然碰到当时纠结的符号表问题。之前公司不能上外网,符号表问题实在不好弄,当时驱动算是做完了,也就没管它了。如今既然又被我看见了,哪有放过的道理。开始我们的旅程。

        windbg调试驱动或者应用程序都有两下子。对于应用程序来说,windbg比VS2008等IDE来说,可以深入的进行堆栈分析(我能想到的就是这个,补充请留言哈,嘿嘿),然后就是轻便。不过想调试方便,还需要系统dll的符号表的。

方法一:

        右键“我的电脑”属性中,高级设置中有个环境变量,变量名:_NT_SYMBOL_PATH,变量值:SRV*{$Path}*http://msdl.microsoft.com/download/symbols/。将“{$Path}”替换为要存储pdb符号表文件的路径,比如:D:\PDB。组合起来就是SRV*D:\PDB*http://msdl.microsoft.com/download/symbols/于是在VC/VS里写程序调试时,或者用IDA时,都会从网上自动下载符号表。但是VC/VS运行程序时会自动下载完所有要用到的pdb,所以第一次启动会很慢,若想立即看结果,只要把网络断开就行了。如果没有该环境变量,自己添加即可。完成后运行下VC/VS启动调试应用程序,这时会自动下载符号文件到指定的目录(D:\PDB)。

方法二:

        设置环境变量如方法一。打开windbg,随便打开一个应用程序(别找系统进程哈,会死的~~~)如mapaint.exe。CTRL+S打开设置符号窗口,输入SRV*D:\PDB*http://msdl.microsoft.com/download/symbols/这一串,选中Reload,OK之后会提示“Reloading current modules....................”。这时在D盘下面是不是有一个pdb的文件夹,里面是不是有ntdll.pdb符号文件,恭喜设置成功。

抱歉!评论已关闭.