Debugging 嵌入xp的Windbg,ntdll.dll符号失败,其他符号受影响?

Debugging 嵌入xp的Windbg,ntdll.dll符号失败,其他符号受影响?,debugging,windows-xp,windbg,windows-xp-embedded,Debugging,Windows Xp,Windbg,Windows Xp Embedded,我正在使用windbg和嵌入式xp。尝试获取操作系统符号失败,消息为“找不到符号文件。默认为导出ntdll.dll的符号”。(这是xp嵌入式系统的典型情况吗?) 我可以为自己的代码定位和加载符号和源代码。但是,单步执行代码表明代码和符号文件之间存在严重不匹配,因为dv返回的内存中变量的位置似乎与实际内存内容不一致(例如,分配一个变量,但之后,dv声明对应的地址似乎没有改变) 我的sympath首先列出符号目录,然后列出缓存,然后列出服务器,因此缓存的符号文件不应受到干扰 这是找不到ntdll符号

我正在使用windbg和嵌入式xp。尝试获取操作系统符号失败,消息为“找不到符号文件。默认为导出ntdll.dll的符号”。(这是xp嵌入式系统的典型情况吗?)

我可以为自己的代码定位和加载符号和源代码。但是,单步执行代码表明代码和符号文件之间存在严重不匹配,因为dv返回的内存中变量的位置似乎与实际内存内容不一致(例如,分配一个变量,但之后,dv声明对应的地址似乎没有改变)

我的sympath首先列出符号目录,然后列出缓存,然后列出服务器,因此缓存的符号文件不应受到干扰

这是找不到ntdll符号文件并使用另一个不正确匹配的符号文件的潜在影响,还是有其他原因可能导致这种情况

示例:

.sympath D:/Symbols
.symfix+
.srcpath D:/Symbols**是,当前源中包含符号
.重新加载
**(由于找不到符号文件,因此默认为ntdll.dll导出符号)
bp 00401000(在建造商处中断)
g
(程序运行直到到达构造函数)
l+t
dv/i/t/V**查找此指针内存位置以检查构造函数
**我们在该指针所指的位置打开一个内存窗口,
**单步执行代码,但该内存窗口中不会出现任何更改
**此外,一个本地大整数,其值由QueryPerformanceCounter设置
**在通话后也会保持不变
**当构造函数返回时,我们分配
**新的全局指针,我们用dt查找它的内存地址,但是
**呼叫后,该地址中仍有0

有人能告诉我如何解决这个问题吗


作为补充说明,我们实际上将cdb作为xp嵌入式计算机上的服务器运行,并使用windbg的“连接到远程会话”选项。以上命令都是通过windbg执行的。

正在执行!.reload之前的sym Noised将让您知道为什么它找不到ntdll.dll的符号。它们完全有可能没有在符号服务器上建立索引,这通常意味着你运气不好(不幸的是,真的没有人可以联系来修复这个问题)

至于您的其他符号问题:

1) 这是您代码的发布版本吗?如果是这样,这完全是意料之中的

2) 如果是调试版本,您是否100%确定所指向的源与目标计算机匹配?在回答以下问题之前,请确保您的回答是100%:)


-斯科特

是的!sym-noise非常有用。在microsoft symbol服务器上找不到此类文件。哇!没有意识到发布模式可以做到这一点(仍然是windbg初学者,以前的使用是在Win7上)。在发布模式下关闭了优化,现在它工作得更好了。谢谢