zoukankan      html  css  js  c++  java
  • 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                                                                                         

    关闭符号加载吵杂模式

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

  • 相关阅读:
    Tempter of the Bone 搜索---奇偶性剪枝
    uestc 1709 Binary Operations 位运算的灵活运用
    uestc 1072 a ^ b
    uestc Another LCIS
    武汉邀请赛 Key Logger 双向链表
    bnu 29378 Adidas vs Adivon 基础题
    中南月赛F ZZY and his little friends
    日期问题
    开灯问题
    开灯问题
  • 原文地址:https://www.cnblogs.com/elvisxu/p/2078921.html
Copyright © 2011-2022 走看看