15.5.2. Windbg

15.5.2.1. 命令行启动参数

  • g 忽视第一个debug断点

  • p <pid> attach到pid为<pid>的程序

15.5.2.2. 调试命令

  • 单步调试
    • F11 单步,遇到函数跟进 (Step Into)

    • F10 单步,遇到函数跳过 (Step Over)

    • Shift + F11 跳出当前函数 (Step Out)

  • 执行到指定位置
    • g [地址|函数名] 执行到指定位置

    • gh [地址|函数名] 执行到指定位置,如遇到异常则中断

    • gn [地址|函数名] 执行到指定位置,如遇到异常则忽略

  • 断点
    • Ctrl+Break 中断当前运行

    • bl 列出已设置断点

    • be [断点ID] 激活断点

    • bd [断点ID] 禁用断点

    • bc [断点ID] 清除断点

    • bp [地址|函数名] 设置断点

  • 数据展示
    • d [地址] 显示内存数据

    • db [地址] 按字节显示内存数据

    • dd [地址] 按双字节显示内存数据

  • 数据编辑
    • e [地址] [数据] 修改任意内存地址的值

  • 栈的显示
    • k [x] 打印调用栈,x为需要回溯的栈帧数

    • kb [x] 打印调用栈,并额外显示3个传递给函数的参数

  • 模块显示
    • lm 列出已经读入的所有模块

    • lmvm [name] 查看模块的详细信息

    • x 查找符号的二进制地址

  • 反汇编功能
    • u 反汇编当前执行的后几条指令并显示

    • u [起始地址] 从指定的地址开始反汇编

    • u [起始地址] [终止地址] 反汇编指定区间的汇编代码

  • 重载 .reload

  • 帮助 .help

  • 清屏 .cls

  • 开启DML帮助 .prefer_dml 1

  • 设置符号地址
    • .sympath <path>

    • .sympath+ srv*<path>*http://msdl.microsoft.com/download/symbols

  • 进程信息
    • .tlist

    • !process 显示调试器当前运行进程信息

    • !process 0 显示进程列表

    • !process <pid> 显示进程信息

    • !peb <address> 查看Process Enviroment Block

  • 线程信息
    • ~ 显示线程信息

    • ~ <thread id> 切换

    • !teb <address> 查看TEB信息

    • .ttime 查看线程时间

  • 异常信息
    • .exr

    • .exr -1 约等于 .lastevent

    • .bugcheck 显示当前bug check的详细信息,用于调试crash

    • !analyze 分析最近的异常事件

  • 错误信息
    • !error <eid> 获取错误码为eid的Win32错误信息

    • !gle get last error