9

我有符号文件的问题。我尝试了符号文件路径并设置路径如下:

srv*c:\symbols*http://msdl.microsoft.com/download/symbols;C:\Users\myuser\Desktop\driver2\objchk_win7_x86\i386

但后来我将其更改为以下内容:

srv*c:\symbols*http://msdl.microsoft.com/download/symbols;C:\Users\myuser\Desktop\mydriver\objchk_win7_x86\i386

我在路径中用 mydriver 更改了 driver2:这是我的驱动程序的 .pdb 文件所在的路径。问题是 .sympath 打印正确的路径,如下所示:

kd> .sympath
Symbol search path is: srv*c:\symbols*http://msdl.microsoft.com/download/symbols;C:\Users\myuser\Desktop\mydriver\objchk_win7_x86\i386
Expanded Symbol search path is: srv*c:\symbols*http://msdl.microsoft.com/download/symbols;c:\users\myuser\desktop\mydriver\objchk_win7_x86\i386

但是仍然找不到驱动程序的符号。如果我运行 .reload 命令,我们可以看到 WinDbg 在 driver2/ 目录而不是 mydriver/ 目录中寻找 .pdb。

kd> .reload /f mydriver.sys
SYMSRV:  c:\symbols\mydriver.pdb\3D655E533B0449A38D7AB0AF637CE9201\mydriver.pdb not found
SYMSRV:  http://msdl.microsoft.com/download/symbols/mydriver.pdb/3D655E533B0449A38D7AB0AF637CE9201/mydriver.pdb not found
SYMSRV:  c:\users\myuser\desktop\mydriver\objchk_win7_x86\i386\mydriver.pdb\3D655E533B0449A38D7AB0AF637CE9201\mydriver.pdb not found
DBGHELP: c:\users\myuser\desktop\driver2\objchk_win7_x86\i386\mydriver.pdb - file not found
*** ERROR: Module load completed but symbols could not be loaded for mydriver.sys
DBGHELP: mydriver - no symbols loaded

我已经删除了所有工作区,关闭了 WinDbg,重新启动了 Windows,但 driver2/ 条目仍然存在:它必须在默认工作区的缓存中或某处。如何删除 WinDbg 的整个个人设置,包括那些缓存,以便我可以重新启动 WinDbg 并使用 driver2/ 路径并使其使用 mydriver/。

我也可以通过将 mydriver/ 目录重命名为 driver2/ 来解决问题,但我不想这样解决问题。我想了解发生了什么并尽我所能解决它。

4

3 回答 3

5
!sym noisy

会告诉你为什么它不想加载 pdb。也许您确实重建了驱动程序并且 pdb guid 或 pdb 年龄不再匹配。如果您确定您已经构建了相同的源文件,您可以通过以下方式强制加载您的 pdb

.reload /i /f yourdriver.sys

/i 是加载不匹配的 pdb 的神奇开关。此开关不会从您的符号服务器加载任何驱动程序,但它只会考虑本地文件路径来加载您的驱动程序。也不考虑符号存储目录 (SRV*),因为会有很多版本可供选择。但是,如果您的 .sympath 直接指向您的 pdb,它将被加载。

于 2015-05-27T21:43:12.087 回答
0

解决此问题的更好方法 - 打开 sim noise 并查看 .reload /f my_driver.sys 的路径或向 .sympath[+] path/to/pdb 添加新路径并执行相同操作

于 2015-03-16T16:07:57.390 回答
0

驱动程序最初是在 driver2 路径中编译和构建的吗?mydriver.sys 的位置是什么?

For example assume I have symbol path 'c:\users\rahulsundar\desktop' set and try to load ntdll.dll, then it displays below error,

0:000> .reload ntdll.dll
DBGHELP: c:\users\rahulsundar\desktop\ntdll.pdb - file not found
DBGHELP: c:\users\rahulsundar\desktop\dll\ntdll.pdb - file not found
DBGHELP: c:\users\rahulsundar\desktop\symbols\dll\ntdll.pdb - file not found
DBGHELP: C:\Windows\SYSTEM32\ntdll.pdb - file not found
DBGHELP: ntdll.pdb - file not found
*** ERROR: Symbol file could not be found.  Defaulted to export symbols for ntdll.dll - 
DBGHELP: ntdll - export symbols

Note: Windbg by default searches ntdll.pdb from the same location 'C:\Windows\SYSTEM32'

解决当前问题的一种方法是,从日志中可以清楚地看出,windbg 需要目录“c:\users\myuser\desktop\mydriver\objchk_win7_x86\i386\mydriver.pdb\3D655E533B0449A38D7AB0AF637CE9201\mydriver.pdb”中的 pdb 文件。

所以手动创建目录直到'mydriver.pdb\3D655E533B0449A38D7AB0AF637CE9201'并将pdb文件放在那里。

这只是 Windows 期望二进制符号的标准方式( binaryfoldername\hashid\pdbfile )。

于 2013-08-16T14:19:27.823 回答