zoukankan      html  css  js  c++  java
  • 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:symbolsdownstreamstore的所有文件,这些文件在30天内没有访问:

    agestore c:symbolsdownstreamstore -days=30 -s
    

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

    agestore c:symbolsdownstreamstore -size=50000 -s
    

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

    0x03 一些问题

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

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

  • 相关阅读:
    博弈最高位POJ 1704(Georgia and BobNim博弈)
    图片优化ios学习之真机测试 copy图片错误解决方案
    输入左移校草计划(Nim)
    类型函数C语言void关键字
    图层设置GDAL/OGR创建DXF文件中多图层的方法
    浏览器下载Firefox os 模拟器安装教程步骤详解
    工程图标ios学习之给程序设置logo
    实例收藏Android开发环境搭建和Android开发基础知识汇总值得收藏
    乱码插入mac mysql汉字乱码问题解决
    菜菜从零学习WCF一(WCF概述)
  • 原文地址:https://www.cnblogs.com/Taolaw/p/13789239.html
Copyright © 2011-2022 走看看