WinDbg符号配置
1、WinDbg简单介绍
WinDbg 是微软的一款强大的调试工具,用于 Windows 平台的内核和用户模式调试。它提供了一系列强大的功能,包括内存和寄存器的查看、断点设置、堆栈跟踪、性能分析等。
WinDbg 的历史可以追溯到微软早期的调试工具,最初是作为 Windows NT 调试程序的一部分开发的。而Window NT是从1988~1993历经五年时间,由Dave Cutler领导并开发。
而WinDbg是我最喜欢的调试器,在我的职业生涯曾多次遇到各种妖怪问题,无一不是凭借这把调试之剑劈开一条生路。
至于安装直接Google上搜索WinDbg即可找到下载连接。
2、符号的重要性
在调试过程中,符号就像海上的灯塔一样指引着方向。其重要性怎么强调都不为过。这我放两张截图看下区别就一目了然。
这一张是没有配置pdb符号
下面这一张是配置了符号:
3、如何配置符号
1、从GUI配置符号
点击菜单栏的文件–> settings -->Debugging settings 既可看到Symbol path配置符号的输入框。
2、从命令配置
1、打开WinDbg,此时还没有进入调试的状态。可以先打开windows记事本进程。
2、点击菜单栏的“文件”
3、点击“Attach to process”,会弹出一个对话框,附加到之前打开的记事本。
4、在输入框输入.sympath srv*F:\symbols*http://msdl.microsoft.com/download/symbols
这里解释下上面的含义:其含义表示从远程地址下载pdf符号,放到F:\symbols。
如果你要下载的自己远程服务器的符号也是类似的格式srv*本地磁盘路径*https://xxxxx
在实际项目中,我们可能需要加载多个符号路径。
.sympath+ F:\python\pdb_files
比如我这里,增加了python的符号路径
4、如何排查符号配置问题
1、如何知道自己配置了那些符号路径?
在WinDbg 命令行输入:.sympath
再回车。
如:
2、如何判断是否加载了pdb符号?
在WinDbg 命令行输入:lm
再回车。lm
是list module 缩写。
这里我们看到python_d 已经加载符号了。
在这里会看到deferred
表示符号延迟加载,待需要时在加载。
2、有时候发现windows自带的符号文件好像没有下载。
!sym noise
命令可以详细查看符号的下载过程以及出错的信息。
在配置符号路径有时候需要执行.reload
重新加载下符号。