• Windbg调试符号概括


        调试符号对于调试器的正常工作很重要,如果缺少调试符号或调试符号不匹配,那么调试器就可能显示出错误的结果。因此在调试过程中正确的加载和使用调试符号是非常关键的。使用调试符号一般按照下面步骤完成:1.设置符号搜索路径;2.加载符号文件;3.检查符号是否加载成功。

    1.设置符号搜索路径

    .sympath 命令 设置或增加符号路径,如:

    .sympath SRV*d:\symbols*http://msdl.microsoft.com/download/symbols

    将路径d:\symbols目录和微软符号服务器设置为符号路径

    .sympath + d:\symbols

    将d:\symbols目录加入到符号搜索路径中

    .symfix 命令 自动将符号路径设置为微软符号服务器,它也可以追加本地目录,如

    .symfix + d:\symbols

    将微软符号服务器设为符号搜索路径,并且在其后添加d:\symbols目录到符号搜索路径中

    2.加载符号文件

    ld和.reload 命令 直接加载符号文件,如:

    ld kernel32 加载kernel32库及其符号文件

    .reload 重新加载已加载进程的符号文件,后跟/f参数表示强制重新加载,如:

    .reload /f NT 强制重新加载解析NT模块符号文件

    某些使用符号的命令也可以触发调试器来加载符号,如栈回溯命令(k*)和反汇编命令等。

    3.检查符号是否加载成功

    !sym noisy 开启符号加载吵杂模式,来显示符号加载的过程信息

    !sym quiet 关闭符号加载吵杂模式,不显示符号加载的过程信息

    !lmi 观察模块信息,如!lmi nt 观察nt模块信息,其中包含了该模块的符号信息

    !lm 列出加载的模块信息列表

    !lm v 包含更丰富信息的模块信息列表

    这些命令可以配合使用,以加载nt模块为例,步骤如下:

    .sympath SRV*d:\symbols*http://msdl.microsoft.com/download/symbols

    设置符号搜索路径

    !sym noisy                                                                                         

    开启符号加载吵杂模式

    .reload /f nt                                                                                        

    强制重新加载nt模块及其符号

    !lmi nt                                                                                                

    查看nt模块信息,确保符号加载成功

    !sym quiet                                                                                         

    关闭符号加载吵杂模式

    总结一下加载调试符号的基本方法,比较实用。

  • 相关阅读:
    二级缓存配置和原理
    延迟加载
    proxy和no-proxy的策略取值的区别
    inverse理解
    Java Spring mvc 操作 Redis 及 Redis 集群
    章节6 关联映射 (转载)
    8.28笔记
    8.26函数相关练习
    8.26 课堂自由笔记 还有考皮的老师笔录
    大话设计模式1.0.2-----策略模式 单一职责原则 和 开放-封闭原则
  • 原文地址:https://www.cnblogs.com/elvisxu/p/2078921.html
Copyright © 2020-2023  润新知