配置符号路径
使用 WinDbg 的第一件事就是配置符号文件路径,通常有以下方法:
通过 WinDbg 菜单设置
打开File
菜单,点击Symbol File Path ...
打开配置窗口(快捷键为 Ctrl + S)。输入:1
SRV*C:\\Symbols*http://msdl.microsoft.com/download/symbols
设置系统环境变量
比起在 WinDbg 中设置,我更喜欢用设置环境变量的方式,因为很多开发工具或调试软件都会读取_NT_SYMBOL_PATH
环境变量的内容作为符号搜索路径。
新建一个_NT_SYMBOL_PATH.reg
文件,内容:1
2
3
4Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]
"_NT_SYMBOL_PATH"="SRV*C:\\Symbols*http://msdl.microsoft.com/download/symbols"双击该文件导入到注册表即可。如果未生效的话就注销一下系统重新登录。
通过启动参数
启动参数-y
可以指定符号路径,仅本次运行生效。1
windbg -y "SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols" notepad.exe
通过命令设置
在 WinDbg 调试过程中用命令设置符号路径,仅本次运行生效。1
.sympath SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols
符号相关命令
开启符号文件加载信息的详细输出。
1
!sym noisy
显示当前符号搜索路径。
1
.sympath
设置符号搜索路径。
1
.sympath C:\Symbols
追加符号搜索路径。
1
.sympath+ C:\Symbols2
自动将符号路径设置为 Microsoft 符号服务器。
1
.symfix C:\Symbols
这条指令将符号路径设置为
SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols
。简化了.sympath
命令。重新加载符号。
1
.reload
这条命令并不会真正的重新加载符号,只是把已加载模块的符号信息清除,在具体执行需要解析符号的命令时,才真正加载符号。
强制重新加载符号。
1
.reload /f
重新加载某个模块的符号。
1
.reload ntdll.dll
打印指定模块的符号信息。
1
!chksym ntdll.dll
离线符号包
微软曾经推出过符号离线安装包,不过后来没有再提供了,所以只有一些老系统有安装包。新的符号必须在线下载。
WindowsXP-KB936929-SP3-x86-ENU.exe
WindowsXP-KB936929-SP3-x86-CHS.exe
WindowsXP-KB936929-SP3-x86-CHT.exe
WindowsXP-KB936929-SP3-x86-CHH.exe
Windows_Win7.7600.16385.090713-1255.X86FRE.Symbols.msi
Windows_Win7.7600.16385.090713-1255.X86CHK.Symbols.msi
Windows_Win7.7600.16385.090713-1255.X64FRE.Symbols.msi
Windows_Win7.7600.16385.090713-1255.X64CHK.Symbols.msi
Windows_Win7SP1.7601.17514.101119-1850.X86FRE.Symbols.msi
Windows_Win7SP1.7601.17514.101119-1850.X86CHK.Symbols.msi
Windows_Win7SP1.7601.17514.101119-1850.AMD64FRE.Symbols.msi
Windows_Win7SP1.7601.17514.101119-1850.AMD64CHK.Symbols.msi