我使用具有嵌入式XP WinDBG的。试图获取操作系统符号失败消息“符号文件不能被发现。默认为出口符号ntdll.dll中”。 (这是典型的嵌入式XP ???)

我没有问题,定位和加载的符号和源自己的代码。但是通过代码步进表明有代码和符号文件在内存中的变量的位置之间的严重不匹配的DV返回的没有出现与实际存储的内容达成一致(如变量赋值,但事后,地址即到不出现其不变的dv权利要求对应)。

我SYMPATH表中的符号目录第一,那么缓存,那么服务器缓存等等符号文件不应该干涉。

这是没有找到NTDLL符号文件,并使用另一个不正确匹配还是有别的东西的潜在影响,可能会导致这?

例:结果 .sympath D:/Symbols
.symfix+
.srcpath D:/Symbols ** Yes, currently the source is in with the symbols
.reload
** (defaults to export symbols for ntdll.dll since symbol file can't be found)
bp 00401000 (break at a constructor)
g
(program runs till it hits constructor)
l+t
dv /i /t /V ** look up this pointer memory location to check constructor
** We bring up a memory window at the location the this pointer refers to and
** step through the code, but no changes appear in that memory window
** moreover a local LARGE_INTEGER whose value is set with QueryPerformanceCounter
** also appears unchanged after the call
** when the constructor returns we assign the memory address returned by
** new to a global pointer, whose memory address we look up with dt, but
** after the call that address still has 0 in it

谁能告诉我如何真正解决这一问题?

作为一个方面说明我们实际运行CDB为XP Embedded的计算机上的服务器,并使用“连接到远程会话”的WinDbg选项。上述命令都是通过windbg中执行。

有帮助吗?

解决方案

执行!在.reload之前符号嘈杂会让你知道它为什么不找ntdll.dll中的符号。这是完全可能的,他们根本就没有索引符号服务器,这通常意味着你是幸运的出来(是不是真的有任何人联系,得到这个不幸的是固定的)。

至于你的其他符号的问题:

1)这是你的代码的发布版本?如果是这样,它的完全预期

2)如果是调试版本,你100%确保源是否指向匹配目标机器?在回答之前确保你100%:)

-Scott

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top