Windbg NTDLL符号可用,但是!地址不起作用

Windbg NTDLL符号可用,但是!地址不起作用,windbg,debug-symbols,ntdll,Windbg,Debug Symbols,Ntdll,我正在尝试使用WinDbg进行基本调试,但我在一开始就被卡住了,因为我的环境找不到ntdll的符号,而这些符号是所必需的!地址命令: 0:000> !address No symbols for ntdll. Cannot continue. 奇怪的是,使用lm我可以看到调试器知道符号文件!那么为什么它不能使用这个文件呢?此文件是使用symchk实用程序导入的,因此它应该是正确的符号文件 以下是命令窗口输出: 0:000> .sympath Symbol search path i

我正在尝试使用WinDbg进行基本调试,但我在一开始就被卡住了,因为我的环境找不到
ntdll
的符号,而这些符号是
所必需的!地址
命令:

0:000> !address
No symbols for ntdll. Cannot continue.
奇怪的是,使用
lm
我可以看到调试器知道符号文件!那么为什么它不能使用这个文件呢?此文件是使用
symchk
实用程序导入的,因此它应该是正确的符号文件

以下是
命令
窗口输出:

0:000> .sympath
Symbol search path is: srv*C:\Symbols*http://msdl.microsoft.com/download/symbols
Expanded Symbol search path is: srv*c:\symbols*http://msdl.microsoft.com/download/symbols

************* Path validation summary **************
Response                         Time (ms)     Location
Deferred                                       srv*C:\Symbols*http://msdl.microsoft.com/download/symbols
0:000> lm
start    end        module name
007b0000 007db000   notepad    (no symbols)           
71b50000 71d5f000   COMCTL32   (deferred)             
747b0000 747ba000   CRYPTBASE   (deferred)             
747c0000 747e0000   SspiCli    (deferred)             
747e0000 748ff000   ucrtbase   (deferred)             
749c0000 74a39000   advapi32   (deferred)             
74a40000 74afb000   RPCRT4     (deferred)             
74db0000 74fac000   KERNELBASE   (pdb symbols)          c:\symbols\wkernelbase.pdb\8BC9719D7B1E26272FB1CB98D403792C1\wkernelbase.pdb
75120000 7517f000   bcryptPrimitives   (deferred)             
75200000 75276000   sechost    (deferred)             
75330000 75347000   win32u     (deferred)             
757a0000 7585f000   msvcrt     (deferred)             
76430000 7658a000   gdi32full   (deferred)             
76590000 76727000   USER32     (deferred)             
76730000 767ac000   msvcp_win   (deferred)             
768c0000 769a0000   KERNEL32   (deferred)             
76aa0000 76b24000   shcore     (deferred)             
76c50000 76ec6000   combase    (deferred)             
76fb0000 76fd1000   GDI32      (deferred)             
76ff0000 7718a000   ntdll      (pdb symbols)          c:\symbols\wntdll.pdb\D85FCE08D56038E2C69B69F29E11B5EE1\wntdll.pdb
您可以看到符号文件的位置已标识(
lm
命令输出),但它声称未找到任何符号

更有趣的是,WinDbg可以向我展示
ntdll
binary中函数的符号:

0:000> x ntdll!*Virtual*
76ff44c0          ntdll!RtlpQueryReadVirtualMemory (void)
76f9bcc7          ntdll!RtlpSecMemFreeVirtualMemory (void)
76fb2df0          ntdll!NtLockVirtualMemory (<no parameter info>)
76fb1fa0          ntdll!ZwQueryVirtualMemory (<no parameter info>)
76fb2bd0          ntdll!NtFlushVirtualMemory (<no parameter info>)
76fb36f0          ntdll!ZwSetInformationVirtualMemory (<no parameter info>)
...
0:000>x ntdll*虚拟的*
76ff44c0 ntdll!RtlpQueryReadVirtualMemory(无效)
76f9bcc7 ntdll!RtlpSecMemFreeVirtualMemory(无效)
76fb2df0 ntdll!NtLockVirtualMemory()
76fb1fa0 ntdll!ZwQueryVirtualMemory()
76fb2bd0 ntdll!虚拟记忆()
76fb36f0 ntdll!ZWSetionFormation虚拟内存()
...

但是,无论何时我尝试使用
!address
命令我有相同的错误。

lm
列出了它知道的模块,这并不意味着它已经加载了所有符号,您需要添加符号的路径,请参阅相关:您这样做了吗?是的。我正要编辑Q,并显示使用
xntdll*起作用,但仍然是
!address
命令给出此“ntdll无符号”错误。这真的很奇怪。你可能有一个无用的缓存,你有没有尝试
.symfix;。重新加载
?你也可以试试第4点的建议。这里:基本上是为了看看你的pdb是否腐败是的,我试过了。请检查编辑。谢谢您的操作系统版本和Windbg版本是什么?我觉得很奇怪,这是每次都发生还是暂时的?您可以调用
.reload/o/f
覆盖当前缓存