我正在尝试在WinXP SP3系统上调试驱动程序问题。但是,当我连接到调试器时,我得到:
* 错误:找不到符号文件。默认导出ntkrpamp.exe的符号
我的主机是WinXP x64 SP2。我的调试器版本是6.11.0001.404(AMD64)。目标是WinXP x86 SP3。当我运行'vertarget'时,我得到:
Windows XP内核版本2600(Service Pack 3)MP(2个推出)免费x86兼容
产品:WinNt,套件:TerminalServer SingleUserTS
建造者:2600.xpsp_sp3_gdr.100427-1636
我使用'!sym noisy'来获得完整的符号加载输出。当我尝试重新加载nt模块(未正确加载的模块)时,它会列出它查找pdb文件的所有位置。对于正确文件所在的行(我安装了XP SP3免费符号),它说:
DBGHELP:e:\ symbols \ wxp_sp3_x86_fre \ exe \ ntkrpamp.pdb - 不匹配的pdb
这就是它告诉我的全部。它没有说明为什么它不匹配。我在这里错过了什么吗?提前谢谢。
注意:无法连接到Microsoft的符号服务器。主机位于Intranet上,无法连接到外部世界。
编辑:我能够通过重新安装目标计算机来解决问题。我知道目标安装了一些Windows更新,我怀疑其中一个使得ntkrpamp.exe的符号过时了。答案 0 :(得分:1)
调试器使用时间戳和校验和来验证符号。如果您确定自己拥有正确的符号,那么只需使用.reload /fi NT
强制加载符号路径中的PDB。
如果您无法从正在调试的计算机访问互联网,您可以随时将二进制文件复制到闪存驱动器,将其带到可以访问Internet的计算机并使用kd -z ntkrpamp.exe
进行调试二进制文件作为转储文件。这将允许您使用Microsoft的符号服务器。然后,您可以通过闪存驱动器将PDB从本地路径复制到Intranet环境。