可以通过各种不同的方式正确设置符号。
WARNING:这里的例子使用\\server\symbols
这通常是不可用的网络存储。将其适应您的本地服务器,或者如果您没有本地服务器,则完全忽略该部分。不存在的服务器可能会导致延迟等。
适用于 80% 情况的 TLDR 版本
新建一个文件夹c:\symbols
对于 Microsoft 提供的符号。然后输入
.symfix+ c:\symbols
.reload
(or reload -f
如果需要的话)
确保您有 Internet 连接,因为这将联系一些 Microsoft 服务器并从那里下载符号。
在 80% 以上的情况下,这可能已经解决了您的符号问题。如果没有,请继续阅读。
通过命令修复符号
WinDbg 将按照符号在符号路径中出现的顺序查找符号。因此,最好先放置本地符号,然后是一些公司本地网络共享,然后从 Internet 下载符号并在本地存储副本。
.sympath c:\mysymbols ; *** Symbols of your application, locally, flat list of PDB files
.sympath+ cache*c:\symbolcache ; *** (optional) Create a cache for everything
.sympath+ \\server\symbols ; *** Symbols provided from a network share
.symfix+ c:\symbols ; *** Microsoft symbols
通过菜单修复符号
In WinDbg (but not the command line equivalents) you can set a symbol path by File/Symbol File Path...
or pressing Ctrl+S. You enter it in the following format
c:\mysymbols;cache*c:\symbolcache;\\server\symbols;SRV*c:\symbols*http://msdl.microsoft.com/download/symbols
通过命令行修复符号
WinDbg 还采用-y
如果您希望使用具有不同符号路径设置的不同桌面链接,请使用命令行开关。
WinDbg -y "<symbol path>"
请注意,此处需要完整路径,其形式如下
c:\mysymbols;cache*c:\symbolcache;\\server\symbols;SRV*c:\symbols*http://msdl.microsoft.com/download/symbols
通过环境变量修复符号
有一个环境变量叫_NT_SYMBOL_PATH
也可以设置为符号路径。使用以下语法:
c:\mysymbols;cache*c:\symbolcache;\\server\symbols;SRV*c:\symbols*http://msdl.microsoft.com/download/symbols
请注意,不仅 WinDbg 会评估此变量,Visual Studio、Process Explorer、Process Monitor 和其他可能的软件也会评估此变量。设置此环境变量可能会影响性能。
将符号路径保存为工作空间的一部分
如果您有一个相当复杂的符号设置,其中包括多个路径,请熟悉WinDbg 工作区的概念.
工作区允许您保存符号路径,因此您不必在每个调试会话中重新键入所有命令。
对工作区感到满意后,为 WinDbg 创建一个链接以包含-Q
这意味着“抑制烦人的“保存工作空间?”问题”。
到目前为止,我很高兴将符号保存为Base
工作区。
延迟符号
延迟符号(在lm
命令)不是问题。 WinDbg 将在需要时加载它们。要强制加载所有这些,请输入
ld*
调试符号问题
如果符号 (PDB) 未按预期工作,请使用
!sym noisy
获取有关 WinDbg 在解析符号时具体执行的操作的更多信息。
找到解决方案后,将其关闭
!sym quiet
要检查各个符号的正确性,您可以使用symchk
WinDbg 自带的工具。
Symchk /if <exe> /s <symbol path> /av /od /pf
/if = input is a file
/s = symbol file path
/od = all details
/av = verify
/pf = check if private symbols are available
or get ChkMatch哪个更容易使用
ChkMatch -c <exe file> <pdb file>
如果您在从网络共享访问符号时遇到问题,请确保您之前登录到网络共享。 AFAIR,WinDbg 不要求凭据。
官方文档
使用 Microsoft Symbol Server 获取调试符号文件(应该重定向到这里但重定向目前已损坏)
Windows 调试器的符号路径