ntkrpamp的本地内核符号无法正确加载到WinDbg中

我试图在WinXP SP3系统上debugging驱动程序问题。 但是,当我连接到debugging器时,我得到:

*错误:无法find符号文件。 默认为导出ntkrpamp.exe的符号

我的主机是WinXP x64 SP2。 我的debugging版本是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的符号服务器不是一个选项。 主机在内联网上,不能连接到外部世界。

编辑:我能够通过重新安装目标机器来解决这个问题。 我知道目标有一些Windows更新安装,我怀疑其中之一使ntkrpamp.exe的符号过时。

调试器使用时间戳和校验和来验证符号。 如果你确定你有正确的符号,那么只需使用.reload /fi NT强制加载符号路径中的PDB。

如果您无法访问正在调试的计算机的Internet表单,则可以始终将二进制文件复制到闪存驱动器,然后将其连接到能够访问Internet的计算机,然后使用kd -z ntkrpamp.exe将二进制kd -z ntkrpamp.exe调试为一个转储文件。 这将允许您使用Microsoft的符号服务器。 然后,您可以通过闪存驱动器将PDB从本地路径复制到Intranet环境。