符号文件安装
pdb是什么?程序数据库是一种专有文件格式,用于存储有关程序的调试信息。pdb文件通常具有.pdb扩展名,通常在编译期间从源文件创建pdb文件。它将所有符号的列表及其地址(可能还有文件名和声明符号的行)存储在模块中。该符号信息不存储在模块本身中,因为它占用了大量空间。
符号文件(pdb)是针对被调试系统而言,如果被调试的系统是xp,那么应该下载和安装xp的符号文件,如果被调试的系统是Win7,那么应该下载和安装Win7的符号文件,不同系统对应的符号文件是不同的,一定要匹配。
举例,在笔者的配置中,VMware中安装的是xp系统,在xp系统环境下进行调试,所以应该下载xp的符号文件。
符号文件的下载地址:http://msdn.microsoft.com/en-us/windows/hardware/gg463028.aspx
当然,目前已经无法下载离线符号文件包了,只能通过在线方式进行下载。
如何配置WinDbg符号?
可以在运行WinDbg->菜单->File->Symbol File Path->在弹出的框中输入“C:\MyCodesSymbols;SRV*C:\MyLocalSymbols*http://msdl.microsoft.com/download/symbols”
按照上面的设置,WinDbg将先从本地文件夹C:\MyCodesSymbols中查找符号文件,如果找不到,则自动从微软的符号文件服务器上下载对应的符号文件,上面的C:\MyCodesSymbols用户可以改为其他任意位置。
还可以设置系统的环境变量:计算机 -> 属性 -> 高级系统设置 -> 环境变量,在系统环境变量中添加一个新的环境变量_NT_SYMBOL_PATH。
_NT_SYMBOL_PATH=SRV*C:\WINDOWS\Symbols*http://msdl.microsoft.com/download/symbols
上面的C:\WINDOWS\Symbols可以改为其他的目录(C:\WINDOWS\Symbols是离线符号文件包默认安装目录)。
关于微软已经停止了符号文件对 Windows XP 系统的支持?https://bbs.pediy.com/thread-256962.htm这个结论是错误的,笔者经过本地实验,WinXP Pro sp3 版本2002可以在线下载对应的符号,之前在不同系统下载对应符号时无法成功的原因还是因为网络不通,如图。
所以就简单在本地配置下上网环境,如下图。
配置好了后,在系统里能访问一个站点说明系统里的网络通了,如下图。
上述准备工作完毕后,就可以使用WinDbg命令加载符号了。
.symfix C:\Program Files\Debugging Tools for Windows (x86)\symbols\ 修正本地的符号配置
之后会自动生成如下配置内容:
SRV*C:\Program Files\Debugging Tools for Windows (x86)\symbols\*http://msdl.microsoft.com/download/symbols
.sympath C:\symbols //安装目录
输入 !sym noisy 命令(查看符号文件下载期间的细节),然后在输入 .reload 命令加载需要的符号文件。
eloading current modules
................
SYMSRV: WinInet Interface using proxy server: socks=192.168.31.74:1080 https=192.168.31.74:1080 http=192.168.31.74:1080 ftp=192.168.31.74:1080
SYMSRV: ntdll.pdb from http://msdl.microsoft.com/download/symbols: 1117184 bytes - copied
DBGHELP: ntdll - public symbols
c:\program files\debugging tools for windows (x86)\symbols\ntdll.pdb\CEFC0863B1F84130A11E0F54180CD21A2\ntdll.pdb
下WinExec断点也会自动下载kernel32符号文件,如图。
断点执行成功,如图。
比较签名是否相同命令:!itoldyouso ntdll C:\symbols\dll\ntdll.pdb
目前符号已经配置完毕,可以正常调试。
最后真的非常感谢@cavan@柒雪天尚@lmwjt@xiangcboy@Flyour@bjtwokeight@cvrock小伙伴们的回答!
单独WinDbg6.12安装包(x64&x86可用)与离线符号文件包(经本地测试与win_xp_sp3环境不匹配,建议不使用)
https://pan.baidu.com/s/18kXlY7WKhaE7S5VnSLR-1Q
提取码:fvva