错误:WinDbg中未找到符号文件

7
我正在使用VmWare进行Windows Vista的远程调试,但是我遇到了一个问题。
*** ERROR: Symbol file could not be found.  Defaulted to export symbols for ntkrpamp.exe " 

此外,如果我在Windbg中输入“!process 0 0”,我将得到以下结果。
**** NT ACTIVE PROCESS DUMP **** NT symbols are incorrect, please fix symbols

我尝试将_NTSYMBOL_PATH设置为“symsrv*symsrv.dll*c:\symbols*http://msdl.microsoft.com/download/symbols”(这在http://support.microsoft.com/kb/311503/中给出),然后我将windbg的符号文件路径更改为“srv*C:\Symbols\MsSymbols*http://msdl.microsoft.com/download/symbols”,但即使如此,当我运行symchk.exe下载符号时,仍然会收到许多失败的消息。当我运行!sym noisy后尝试使用.reload重新加载时,我遇到了同样的错误。
Connected to Windows Vista 6000 x86 compatible target at (Sat Jan 28 16:52:23.839 2012 (GMT+5)), ptr64 FALSE
SYMSRV:  The system cannot find the file specified.
SYMSRV:  The system cannot find the file specified.
SYMSRV:  The system cannot find the file specified.
SYMSRV:  c:\symbols\mssymbols\ntkrpamp.pdb\FD50D285751D4684938604B2CC1B41682\ntkrpamp.pdb not found
SYMSRV:  http://msdl.microsoft.com/download/symbols/ntkrpamp.pdb/FD50D285751D4684938604B2CC1B41682/ntkrpamp.pdb not found
DBGHELP: ntkrpamp.pdb - file not found
*** ERROR: Symbol file could not be found.  Defaulted to export symbols for ntkrpamp.exe - 
DBGHELP: nt - export symbols
Loading Kernel Symbols
...............................................................
................................................................
............
Loading User Symbols

Loading unloaded module list
....

但是当我尝试运行!process 0 0时,出现了错误提示不正确的符号。
提前感谢您的帮助和时间。

为什么这很重要?你想调试你的代码还是想调试操作系统? - Hans Passant
调试驱动程序。我正在运行一个设置,其中目标操作系统(Vista)在VMware中运行,并且我有一个主机Win7操作系统。 - rebeL
3
实际上,这非常重要。如果没有 NT 模块的符号(即内核和执行子系统),调试器就没用了。当然,你可以调试自己的模块,但你无法检查系统的整体状态(在进行内核级调试时这非常重要)。 - snoone
你能否访问符号服务器?比如说,将用户模式调试器附加到explorer.exe上,你能获取MS的符号吗?你是否正在运行预发布/测试版/补丁版本的Vista? - jcopenha
@jcopenha:不,我也尝试了用户模式调试,但它失败了。我正在运行Windows Vista Home Premium。 - rebeL
显示剩余3条评论
2个回答

9

你的固定符号路径看起来很好,第一个路径完全不正确。你可以尝试以下命令,看看是否可行?

.symfix c:\websymbols
.reload /o

如果这个方法不行,你确定目标设备上运行的是官方版本吗?不是测试版或其他版本,对吧?另外,你可能需要排除任何网络问题。


我也尝试过这个……但没有成功……我正在检查一些网络问题,可能是防火墙或杀毒软件。 - rebeL
当我从Win 7机器调试Win 8.1机器时,这解决了我的问题。 - Moshe

0

我遇到了同样的问题。 我的IE浏览器无法连接互联网(而其他浏览器可以),导致windbg返回ERROR_CANNOT_CONNECT_INTERNET,结果无法找到pdb文件。

SYMSRV:  BYINDEX: 0x5
     d:\symbolslocal*http://msdl.microsoft.com/download/symbols
     ntdll.dll
     4CE7B96E13c000
SYMSRV:  d:\symbolslocal\ntdll.dll\4CE7B96E13c000\ntdll.dll - file not found
SYMSRV:  HTTPGET: /download/symbols/ntdll.dll/4CE7B96E13c000/ntdll.dll
SYMSRV:  HttpSendRequest: 12029 - ERROR_INTERNET_CANNOT_CONNECT
SYMSRV:  d:\symbolslocal\ntdll.dll\4CE7B96E13c000\ntdll.dll not found          

SYMSRV:http://msdl.microsoft.com/download/symbols/ntdll.dll/4CE7B96E13c000/ntdll.dll not found
DBGHELP: E:\Program Files (x86)\Windows Kits\10\Debuggers\x64\ntdll.dll - file not found
DBGHELP: E:\Program Files (x86)\Windows Kits\10\Debuggers\x64\ntdll.dll - file not found
DBGENG:  ntdll.dll - Image mapping disallowed by non-local path.
DBGHELP: No debug info for ntdll.dll.  Searching for dbg file
SYMSRV:  BYINDEX: 0x6
     d:\symbolslocal*http://msdl.microsoft.com/download/symbols
     ntdll.dbg
     4CE7B96E13c000
SYMSRV:  d:\symbolslocal\ntdll.dbg\4CE7B96E13c000\ntdll.dbg - file not found
SYMSRV:  HTTPGET: /download/symbols/ntdll.dbg/4CE7B96E13c000/ntdll.dbg
SYMSRV:  HttpSendRequest: 12029 - ERROR_INTERNET_CANNOT_CONNECT
SYMSRV:  d:\symbolslocal\ntdll.dbg\4CE7B96E13c000\ntdll.dbg not found
SYMSRV:       http://msdl.microsoft.com/download/symbols/ntdll.dbg/4CE7B96E13c000/ntdll.dbg not found
DBGHELP: .\ntdll.dbg - file not found
DBGHELP: .\dll\ntdll.dbg - path not found
DBGHELP: .\symbols\dll\ntdll.dbg - path not found
DBGHELP: ntdll.dll missing debug info.  Searching for pdb anyway
DBGHELP: Can't use symbol server for ntdll.pdb - no header information available
DBGHELP: ntdll.pdb - file not found
*** ERROR: Module load completed but symbols could not be loaded for ntdll.dll

所以只需要解决IE的问题,那么windbg就可以正常工作了。 关于如何解决IE的问题, 打开“Internet选项”--->“连接”---> 删除所有连接----->重新启动IE----> IE OK

然后windbg现在可以访问互联网了,它现在可以下载符号文件了。

IE无法访问INTERNET可能会导致许多程序出现问题。希望这可以帮助到您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接