什么是符号
符号文件包含大量的数据,这些数据在运行二进制文件时实际上并不需要,但在调试过程中很有用。
- 符号与二进制文件中的raw bytes 一一对应
- 变量,函数,结构体,等等
- 符号文件存储在PDB文件中
- 在镜像文件构建(编译+链接)时候生成
- PDB文件通常还包含其他符号信息(私有符号&公开符号)
-
配置符号
普通程序:
- 把pdb文件和镜像文件放到相同目录
- 或者手动指定符号文件目录
windows binaries
- 使用环境变量 _NT_SYMBOL_PATH 设置
- 设置为 srvc:\MyServerSymbolshttps://msdl.microsoft.com/download/symbols
- 很多工具都是查找此环境变量找到windows 的符号
set _NT_SYMBOL_PATH=srv*DownstreamStore*https://msdl.microsoft.com/download/symbols
或者使用 .symfix 命令让windbg 自动创建符号目录
.symfix+ C:\MySymbols
在windbg中设置
lm 列出加载模块
使用 .reload -f wow64.dll 强制下载加载符号