基本调试:
0. 内置的帮助命令:
? 显示常用的命令
? /D 显示常用命令和DML
.help 显示.命令
.help /D 以DML形式显示'.'命令(顶部会给出链接)
.help /D a* 以DML形式显示a开头的'.'命令 (*为通配符)
.hh 打开帮助文件
.hh dt 打开帮助文件,并在索引定位到 dt命令
version 显示调试器以及加载扩展版本信息
vertarget 显示目标计算机的版本
n [8|10|16] 设置调试器数基,8进制,10进制等
.cls 清空界面
1. 常用'.'命令
.srcpath 显示或设置源码的检索路径
.srcpath+ 目录 将目录添加到检索到的源码路径
.lines [-e|-d|-t] 切换源码行的支持,可用,禁用,切换
.srcnoisy 1 显示源码的搜索过程 .srcnoisy 0 不显示源码的搜索过程。
小写'L'的命令
l+l,l-l 显示行数
l+o, l-o 除了[s]隐藏一切
l+s, l-s 源码和行数
l+t, l-t 源码模式对汇编模式
例如:
.srcpath C:\Users\Administrator\Desktop\WinDbug\TestDebug1
添加源码的路径,模块可以与源码结合,看到源码中的调试过程
.exepath C:\Users\Administrator\Desktop\exefiles
在调试dump文件时才会用得上可执行映像路径。需要将这个路径设置为调试的exe,dll,sys等可执行文件的路径。
调试日志
.logopen /t d:\logs\mylogfile.txt 打开日志文件
.logappend /t d:\logs\mylogfile.txt 向日志文件中追加 日志
.logclose 关闭日志文件
注:在关闭一次调试时,要关闭日志文件。
调试会话:
.attach PID (在调试一个进程中),附加到一个进程
.detach 结束调试会话,但是保留用户模式目标程序运行
q / qq 结束调试会话,并终止目标程序
.restart 重启目标程序
2. 符号相关
ld 模块名 加载指定模块符号
ld * 加载所有模块的符号
!sym 获取符号加载情况( !sym noisy 显示搜索符号过程,!sym quiet 默认)
x 可以列举模块的名字
x [选项] 模块!符号
选项: /t 带数据类型
/v 详情,包括符号类型与大小
/a 按照地址分类
/n 按照名称分类
/z 按照大小分类(函数在内存中的大小)
x [选项]模块名字!符号匹配表达式 可以查找一些函数名字,以方便下断点
比如: x user32!GetWindowT* 列举出 USER32.dll中的 GetWindowT开头的所有的函数。
x /t /v notepad!* 用于列举出notepad模块的public函数以及变量
ln 地址 列出最近的符号,显示给出地址附近的符号,用于确定指针指向位置以及在损坏栈中,确定栈的调用程序。
ln 01001b90 列举出地址01001b90附近的符号
.sympath 路径 设置符号路径
.sympath+ 路径 添加符号路径
.symfix 路径 设置符号存储路径
.symfix+ 保存路径 附加到现有路径,当作符号下载流存储位置
.reload 为所有模块重载符号信息
.reload [/f|/v] /f 强制立即加载符号, /v 详细模式
.reload [/f|/v] 模块 同上,只是针对特定模块
.reload /d 重新加
0. 内置的帮助命令:
? 显示常用的命令
? /D 显示常用命令和DML
.help 显示.命令
.help /D 以DML形式显示'.'命令(顶部会给出链接)
.help /D a* 以DML形式显示a开头的'.'命令 (*为通配符)
.hh 打开帮助文件
.hh dt 打开帮助文件,并在索引定位到 dt命令
version 显示调试器以及加载扩展版本信息
vertarget 显示目标计算机的版本
n [8|10|16] 设置调试器数基,8进制,10进制等
.cls 清空界面
1. 常用'.'命令
.srcpath 显示或设置源码的检索路径
.srcpath+ 目录 将目录添加到检索到的源码路径
.lines [-e|-d|-t] 切换源码行的支持,可用,禁用,切换
.srcnoisy 1 显示源码的搜索过程 .srcnoisy 0 不显示源码的搜索过程。
小写'L'的命令
l+l,l-l 显示行数
l+o, l-o 除了[s]隐藏一切
l+s, l-s 源码和行数
l+t, l-t 源码模式对汇编模式
例如:
.srcpath C:\Users\Administrator\Desktop\WinDbug\TestDebug1
添加源码的路径,模块可以与源码结合,看到源码中的调试过程
.exepath C:\Users\Administrator\Desktop\exefiles
在调试dump文件时才会用得上可执行映像路径。需要将这个路径设置为调试的exe,dll,sys等可执行文件的路径。
调试日志
.logopen /t d:\logs\mylogfile.txt 打开日志文件
.logappend /t d:\logs\mylogfile.txt 向日志文件中追加 日志
.logclose 关闭日志文件
注:在关闭一次调试时,要关闭日志文件。
调试会话:
.attach PID (在调试一个进程中),附加到一个进程
.detach 结束调试会话,但是保留用户模式目标程序运行
q / qq 结束调试会话,并终止目标程序
.restart 重启目标程序
2. 符号相关
ld 模块名 加载指定模块符号
ld * 加载所有模块的符号
!sym 获取符号加载情况( !sym noisy 显示搜索符号过程,!sym quiet 默认)
x 可以列举模块的名字
x [选项] 模块!符号
选项: /t 带数据类型
/v 详情,包括符号类型与大小
/a 按照地址分类
/n 按照名称分类
/z 按照大小分类(函数在内存中的大小)
x [选项]模块名字!符号匹配表达式 可以查找一些函数名字,以方便下断点
比如: x user32!GetWindowT* 列举出 USER32.dll中的 GetWindowT开头的所有的函数。
x /t /v notepad!* 用于列举出notepad模块的public函数以及变量
ln 地址 列出最近的符号,显示给出地址附近的符号,用于确定指针指向位置以及在损坏栈中,确定栈的调用程序。
ln 01001b90 列举出地址01001b90附近的符号
.sympath 路径 设置符号路径
.sympath+ 路径 添加符号路径
.symfix 路径 设置符号存储路径
.symfix+ 保存路径 附加到现有路径,当作符号下载流存储位置
.reload 为所有模块重载符号信息
.reload [/f|/v] /f 强制立即加载符号, /v 详细模式
.reload [/f|/v] 模块 同上,只是针对特定模块
.reload /d 重新加