尽管指向Microsoft符号服务器,但获取符号相关错误

Sil*_*ent 1 debugging windbg

尝试在Windbg中调试转储文件.它是一个托管与一些Microsoft本机库互操作.我已设置符号路径.sympath SRV*c:\ SymbolsCash*http://msdl.microsoft.com/download/symbols.

我没有任何问题加载SOS.我可以运行sos命令而不会出现任何错误.我也可以运行大部分Windbg命令(如〜,kb,.time等),但是对于某些命令(例如,!address -summary),我得到以下错误.

您的调试器未使用正确的符号
为了使此命令正常工作,您的符号路径
必须指向具有完整类型信息的.pdb文件.

某些.pdb文件(例如公共OS符号)不
包含所需信息.
如果需要此命令,请与提供这些符号的组联系
.
引用类型:ntdll!_NT_TIB

我在这里缺少什么想法?

小智 6

从您的输出中,我们可以看到您没有ntdll的符号.请注意您使用"导出符号"的行(上面输出中的第3行).这意味着您没有此模块的符号,并且调试器仅使用模块导出表中的条目.您需要的结构不包含在导出表的有限信息中.

您的符号路径应如下所示:

SRV*<local symbol cache directory>*http://msdl.microsoft.com/download/symbols
Run Code Online (Sandbox Code Playgroud)

例:

SRV*c:\symbols*http://msdl.microsoft.com/download/symbols
Run Code Online (Sandbox Code Playgroud)

如果正确设置了符号路径,则可以通过运行以下命令打开详细符号加载:

!sym noisy
Run Code Online (Sandbox Code Playgroud)

然后强制重新加载ntdll.dll:

.reload /f ntdll.dll
Run Code Online (Sandbox Code Playgroud)

使用输出确定您没有获得符号的原因.然后运行以下命令关闭详细符号加载:

!sym quiet
Run Code Online (Sandbox Code Playgroud)

此外,我更喜欢!lmi <binary>(例如!lmi ntdll)lmvm在解决符号加载时的问题.关于你拥有的东西,输出更清晰一些.在!lmi输出结束时,您将看到"加载报告"行.