符号文件安装
pdb是什么?程序数据库是一种专有文件格式,用于存储有关程序的调试信息。pdb文件通常具有.pdb扩展名,通常在编译期间从源文件创建pdb文件。它将所有符号的列表及其地址(可能还有文件名和声明符号的行)存储在模块中。该符号信息不存储在模块本身中,因为它占用了大量空间。
符号文件(pdb)是针对被调试系统而言,如果被调试的系统是xp,那么应该下载和安装xp的符号文件,如果被调试的系统是Win7,那么应该下载和安装Win7的符号文件,不同系统对应的符号文件是不同的,一定要匹配。
举例,在笔者的配置中,VMware中安装的是xp系统,在xp系统环境下进行调试,所以应该下载xp的符号文件。
符号文件的下载地址:d32K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3#2K6k6r3&6Q4x3X3g2E0K9h3y4J5L8%4y4G2k6Y4c8Q4x3X3g2U0L8$3#2Q4x3V1k6W2L8W2)9J5k6s2g2K6i4K6u0r3N6$3W2F1k6r3!0%4M7#2)9J5c8X3S2S2M7X3c8%4j5i4u0W2i4K6u0r3k6$3M7@1y4U0x3H3x3U0S2Q4x3X3g2S2M7%4m8^5

当然,目前已经无法下载离线符号文件包了,只能通过在线方式进行下载。
如何配置WinDbg符号?
可以在运行WinDbg->菜单->File->Symbol File Path->在弹出的框中输入“C:\MyCodesSymbols;SRV*C:\MyLocalSymbols*3faK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3#2K6k6r3I4Q4x3X3g2E0K9h3y4J5L8%4y4G2k6Y4c8Q4x3X3g2U0L8$3#2Q4x3V1k6V1L8%4N6F1L8r3!0S2k6q4)9J5c8Y4y4&6L8h3u0G2L8s2y4Q4c8e0u0Q4z5o6m8Q4z5f1b7`.
按照上面的设置,WinDbg将先从本地文件夹C:\MyCodesSymbols中查找符号文件,如果找不到,则自动从微软的符号文件服务器上下载对应的符号文件,上面的C:\MyCodesSymbols用户可以改为其他任意位置。
还可以设置系统的环境变量:计算机 -> 属性 -> 高级系统设置 -> 环境变量,在系统环境变量中添加一个新的环境变量_NT_SYMBOL_PATH。
_NT_SYMBOL_PATH=SRV*C:\WINDOWS\Symbols*c23K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3#2K6k6r3I4Q4x3X3g2E0K9h3y4J5L8%4y4G2k6Y4c8Q4x3X3g2U0L8$3#2Q4x3V1k6V1L8%4N6F1L8r3!0S2k6q4)9J5c8Y4y4&6L8h3u0G2L8s2x3`.
上面的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\*9c8K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3#2K6k6r3I4Q4x3X3g2E0K9h3y4J5L8%4y4G2k6Y4c8Q4x3X3g2U0L8$3#2Q4x3V1k6V1L8%4N6F1L8r3!0S2k6q4)9J5c8Y4y4&6L8h3u0G2L8s2x3`.
.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 9b9K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3#2K6k6r3I4Q4x3X3g2E0K9h3y4J5L8%4y4G2k6Y4c8Q4x3X3g2U0L8$3#2Q4x3V1k6V1L8%4N6F1L8r3!0S2k6q4)9J5c8Y4y4&6L8h3u0G2L8s2y4Q4x3@1q4Q4x3U0k6F1j5Y4y4H3i4K6y4n7x3e0p5I4y4K6p5^5y4q4)9J5y4X3&6T1M7%4m8Q4x3@1u0T1P5i4c8W2M7#2)9J5y4X3&6T1M7%4m8Q4x3@1u0Q4x3X3c8Q4x3U0k6F1j5Y4y4H3i4K6y4n7j5$3!0H3K9h3g2V1i4K6t1$3L8X3u0K6M7q4)9K6b7W2)9J5y4X3&6T1M7%4m8Q4x3@1u0Q4x3U0k6F1j5Y4y4H3i4K6y4n7i4K6t1$3L8X3u0K6M7q4)9K6b7W2)9J5y4X3&6T1M7%4m8Q4x3@1u0Q4x3U0k6F1j5Y4y4H3i4K6y4n7i4K6t1$3L8X3u0K6M7q4)9K6b7W2)9J5y4X3&6T1M7%4m8Q4x3@1u0Q4x3U0k6F1j5Y4y4H3i4K6y4n7
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环境不匹配,建议不使用)
eacK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6H3j5h3&6Q4x3X3g2T1j5h3W2V1N6g2)9J5k6h3y4G2L8g2)9J5c8Y4y4Q4x3V1j5I4z5r3E0j5L8q4V1%4g2@1E0Z5j5f1f1%4f1K6g2h3L8W2y4x3f1W2)9J5k6o6q4c8
提取码:fvva