无法获取 ntkrpamp 的本地内核符号以在 WinDbg 中正确加载

发布于 2024-10-21 06:51:52 字数 809 浏览 4 评论 0原文

我正在尝试调试 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嘈杂”来获得完整的符号加载输出。当我尝试重新加载 nt 模块(未正确加载的模块)时,它会列出它查找 pdb 文件的所有位置。对于正确文件所在的行(我安装了 XP SP3 免费符号),它显示:

DBGHELP: e:\symbols\wxp_sp3_x86_fre\exe\ntkrpamp.pdb - 不匹配的 pdb

这就是它告诉我的全部。它没有说明为什么不匹配。我在这里错过了什么吗?提前致谢。

注意:连接到 Microsoft 的符号服务器不是一个选项。主机在内网,无法与外界连接。

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

I'm trying to debug a driver issue on a WinXP SP3 system. However, when I connect to the debugger I get:

* ERROR: Symbol file could not be found. Defaulted to export symbols for ntkrpamp.exe

My host machine is WinXP x64 SP2. My debugger version is 6.11.0001.404 (AMD64). The target is WinXP x86 SP3. When I run 'vertarget' I get:

Windows XP Kernel Version 2600 (Service Pack 3) MP (2 procs) Free x86 compatible
Product: WinNt, suite: TerminalServer SingleUserTS
Built by: 2600.xpsp_sp3_gdr.100427-1636

I used '!sym noisy' to get full symbol loading output. When I try to reload the nt module (the one that didn't load correctly) it lists all the places it looks for the pdb file. For the line where the correct file is (I installed the XP SP3 free symbols) it says:

DBGHELP: e:\symbols\wxp_sp3_x86_fre\exe\ntkrpamp.pdb - mismatched pdb

This is all it tells me. It doesn't say why it's mismatched. Am I missing something here? Thanks in advance.

NOTE: Connecting to Microsoft's symbol server is not an option. The host machine is on an intranet and cannot be connected to the outside world.

EDIT: I was able to fix the problem by reinstalling the target machine. I know the target had some Windows updates installed and I suspect one of these made the symbols for ntkrpamp.exe go out-of-date.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

这样的小城市 2024-10-28 06:51:52

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

如果您无法从正在调试的计算机访问互联网,您可以随时将二进制文件复制到闪存驱动器,将其带到可以访问互联网的计算机并使用 kd -z ntkrpamp.exe 将二进制文件调试为转储文件。这将允许您使用 Microsoft 的符号服务器。然后,您可以通过闪存驱动器将 PDB 从本地路径复制到您的 Intranet 环境。

The debugger uses timestamps and a checksum to validate the symbols. If you are sure you have the right symbols then just use .reload /fi NT to force loading the PDB you have in the symbol path.

If you do not have access to the internet form the machine being debugged, you can always copy binary to a flash drive, take it to a machine that does have access to the Internet and use kd -z ntkrpamp.exe to debug the binary as a dump file. This will allow you to use Microsoft's symbol server. You can then copy the PDB from the local path to your intranet environment via a flash drive.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文