windbg加载符号表

0x00 前言

在使用windbg调试windows中的程序时会经常碰到一些系统的dll里面的一些函数调用,有些函数是没有具体函数名的,这对于调试非常不利,基于此,微软针对windows也发布了很多系统dll对应的符号表,这些符号表如今基本集成在了微软的符号表服务器中,本文简单讲一下如何在windbg中加载符号表。

0x01 配置符号表

首先给一个最常用的方式,要做的工作基本就是先在本地指定的文件目录搜索对应的符号表,如果找不到就连接远程服务器下载,并保存在本地,方便下次使用,如下

.sympath srv*c:\Symbols*https://msdl.microsoft.com/download/symbols

这是对于没有符号表的情况,如果本地本来就有符号表的缓存,但是考虑到windows版本等问题,相同的符号表会不会覆盖等情况,建议使用下面的方法从远程加载新的符号表为本次调试使用

.sympath c:\MyRegularSymbols;srv*c:\MyServerSymbols*https://msdl.microsoft.com/download/symbols

顺利的话在加载完符号表以后需要重新载入模块,命令如下:

.reload

0x02 管理符号表

当调试的东西很多,符号表越来越大的时候,可以使用agestore来管理不常用的符号表,下面举几个例子。

以下命令删除C:\MyDir中2008年1月7日之前访问的文件:

agestore c:\mydir -date=01-07-2008

以下命令将删除目录树中从属于C:\symbols\downstreamstore的所有文件,这些文件在30天内没有访问:

agestore c:\symbols\downstreamstore -days=30 -s

以下命令删除从属于C:\symbols\downstreamstore目录树中大于50,000字节的文件:

agestore c:\symbols\downstreamstore -size=50000 -s

更多的内容可以参考微软官方的文档

0x03 一些问题

符号表设置以后没法加载,或加载失败?

首先检查本地是否真的有网,没问题的话,考虑科学的上网或许可以加速下载,如果还不行,可能就是符号表服务器的问题,这类问题已经多次了。
另外,在排查问题的时候可以尝试使用!sym noisy命令,实时输出调试器加载符号表时候的信息。先运行!sym noisy再运行.reload


__EOF__

本文作者Taolaw
本文链接https://www.cnblogs.com/Taolaw/p/13789239.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   Taolaw  阅读(4291)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?
点击右上角即可分享
微信分享提示