没有合适的资源?快使用搜索试试~ 我知道了~
WinDBG命令行大全.pdf
5星 · 超过95%的资源 需积分: 10 26 下载量 108 浏览量
2013-06-09
21:19:02
上传
评论 1
收藏 396KB PDF 举报
温馨提示
试读
22页
WinDBG命令行大全.pdf 微软免费的调试工具,很小,但是功能很全 这里只对其的命令文档
资源推荐
资源详情
资源评论
常规 WinDbg
WinDbg
WinDbg
WinDbg 命令(主题分组)
原作: Robert Kuster 写于 2007 年 11 月。 版权归属于原作者。 http://www.software.rkuster.com
翻译:不死怨灵
<< 返回顶部
1) 内置帮助命令
9) 例外、事件与事故分析
17) 变量信息
2) 常用 Windbg 命令 (清空屏幕, ……
)
10) 加载模块与 映像 信息
18) 内存
3) 调试会话(附加,分离 …… )
11) 进程相关信息
19) 操作内存范围
4) 表达式与命令
12) 线程相关信息
20) 内存: 堆
5) 调试器标记语言( DML )
13) 断点
21) 应用程序验证 工具
6) 主扩展
14) 步入与步过 ( F10,F11 )
22) 记录 扩展( logexts.dll )
7) 符号
15) 调用 栈
8) 源
16) 寄存器
1)
1)
1)
1) 内置帮助命令
命令
变型 /
/
/
/ 参数
描述
?
?
? /D
显示常用命令
显示常用命令和 DML
.help
.help
.help /D
. help /D a*
显示 “ . ” 命令
以 DML 形式显示 “ . ” 命令(顶部已给出链接)
以 DML 形式显示 a 开头的 “ . ” 命令(通配符)
.chain
.chain
.chain /D
列出所有加载的调试器扩展
以 DML 形式列出所有加载的调试器扩展(扩展会链接到 .extmatch 命令)
.extmatch
.extmatch /e ExtDLL 函数过滤
.extmatch /D /e ExtDLL 函数过滤
显示一个扩展 DLL 的输出函数。 函数过滤 = 通配字符串
以 DML 方式显示。(函数链接指向 ” !Ext 名称 .help 函数名 ” 命令)
例如: .extmatch
.extmatch
.extmatch
.extmatch /D
/D
/D
/D /e
/e
/e
/e uext
uext
uext
uext *
*
*
* (显示所有 uext.dll 的输出函数)
.hh
.hh
.hh 文本
打开 WinDbg 的帮助文件
文本 = 在帮助文件的索引中要查找的文本
例如: .hh
.hh
.hh
.hh dt
dt
dt
dt
2)
2)
2)
2) 常用 WinDbg
WinDbg
WinDbg
WinDbg 命令(显示版本、清空屏幕等)
命令
变型 /
/
/
/ 参数
描述
version
转储调试器和所加载的扩展的版本信息
vercommand
转储命令还用于启动调试器
vertaget
目标计算机的版本
Ctrl+Alt+V
切换详细模式开 / 关
在详细模式下,一些命令(如寄存器转储)会更加详细的输出
n
n [8 | 10 | 16]
设置数基
<< 返回顶部
<< 返回顶部
<< 返回顶部
.formats
.formats 表达式
显示数字格式 = 求一个数值表达式或符号的值,并用多种数值格式表达它( 16 进
制、 10 进制、 8 进制、 2 进制、时间 …… )
例 1 : .formats 5
例 2 : .formats poi(nLocal1) == .formats @@($!nLocal1)
.cls
清空屏幕
.lastevent
显示最近一次发生的例外或事件(为什么调试器要等待?)
.effmach
.effmach
.effmach .
.effmach #
.effmach x86 | amd64 | ia64 | ebc
转储有效机器( x86,amd64, ... ) :
使用目标电脑本身的处理器模式
使用执行最近事件代码的处理器模式
使用 x86,amd64,ia64 或 ebc 处理器模式
该设置影响许多调试器的功能:
-> 这些处理器的 辗转开解器 用于栈跟踪
-> 这些处理器的寄存器是激活的
.time
显示时间(系统启动、进程启动、内核时间、用户时间)
3)
3)
3)
3) 调试会话(附加、分离 …… )
命令
变型 /
/
/
/ 参数
描述
.attach
PID
附加到一个进程
.detach
结束调试会话,但保留一切用户模式目标程序的运行
q
q, qq
退出 = 结束调试会话并且终止目标程序
远程调试: q = 无影响; qq = 终止调试服务器
.restart
重启目标程序
4)
4)
4)
4) 表达式与命令
命令
变型 /
/
/
/ 参数
描述
;
命令分隔符(命令 1; 命令 2; …… )
?
? 表达式
?? 表达式
求表达式的值(使用默认求值器)
求 c++ 表达式的值
.expr
.expr
.expr /q
.expr /s c++
.expr /s masm
选择默认的表达式求值器
显示当前求值器
显示可用的求值器
设置 c++
c++
c++
c++ 为默认求值器
设置 宏汇编 为默认求值器
*
* [ 任意文本 ]
注释行说明符
终止于:行末
$$
$$[ 任意文本 ]
注释说明符
终止于:行末或分号
.echo
.echo 字符串
.ecoh " 字符串 "
响应注释 -> 注释文本 + 响应它
终止于:行末或分号
若拥有 $$ 标记或 * 标记,调试器会忽略输入文本而不响应
<< 返回顶部
<< 返回顶部
5)
5)
5)
5) 调试器标识语言( DML
DML
DML
DML )
自 6.6.07
6.6.07
6.6.07
6.6.07 版本的调试器开始,加入了一种新的调试器与扩展的增强输出机制: DML
DML
DML
DML
DML
DML
DML
DML 允许以标签的形式输出正规命令和额外的非显示信息
调试器的用户界面分析出额外的信息用以提供新的行为
DML
DML
DML
DML 主要是为了解决两个问题:
�
�
�
�
链接到相关信息
�
�
�
�
调试器与扩展功能的可发掘性
命令
变型 /
/
/
/ 参数
描述
.dml_start
转到其他的 DML 命令
.prefer_dml
.prefer_dml [1 | 0]
全局设置: DML 默认是否为 DML 增强命令?
注释许多命令,诸如: k, lm, ... 输出后附加 DML 内容
.help /D
.help 加入了一个新的 DML 模式,顶部给出链接
.chain /D
.chain 加入了一个新的 DML 模式,扩展会链接到 .extmatch
.extmatch /D
.extmatch 加入了一个新的 DML 模式,输出 函数链接指向 ” !Ext 名称 .help 函数名 ”
命令
lmD
lm 加入了一个新的 DML 模式,模块名指向 lmv 命令
kM
k 加入了一个新的 DML 模式,框体数指向 .frame /dv
.dml_flow
.dml_flow 起始地址 目标地址
允许对函数进行代码流程的交互式搜寻
1 .
为一个开始于给出的起始地址的函数构造一个代码流程图(类似于 uf )
2 .
显示由当前程序块给出的基本程序块地址同时连接着将要提交的程序块和
程序块指向
例如: .dml_flow
.dml_flow
.dml_flow
.dml_flow CreateRemoteTread
CreateRemoteTread
CreateRemoteTread
CreateRemoteTread CreateRemoteTread+30
CreateRemoteTread+30
CreateRemoteTread+30
CreateRemoteTread+30
6)
6)
6)
6) 主扩展
命令
变型 /
/
/
/ 参数
显示支持的命令
!Ext.help
通常扩展
!Exts.help
-||-
!Uext.help
用户模式扩展(非特定系统)
!Ntsdexts.help
用户模式(特性系统)
!logexts.help
记录器扩展
!clr10\sos.help
调试管理模式
!wow64exts.help
Wow64 调试器扩展
!Wdfkd.help
内核模式驱动构架扩展
!Gdikdx.help
图形驱动扩展
...
! 名称 .help
! 名称 .help 函数
显示关于输出函数的详细帮助
名称 = 扩展 DLL 的占位符
函数 = 输出函数的占位符
例如: !Ntsdexts.help
!Ntsdexts.help
!Ntsdexts.help
!Ntsdexts.help handle
handle
handle
handle (显示 !Ntsdexts.handle 的详细信息)
7)
7)
7)
7) 符号
命令
变型 /
/
/
/ 参数
描述
ld
ld 模块名
ld *
为模块加载符号
为所有模块加载模块
!sym
!sym
!sym noisy
!sym quiet
获取符号加载情况
设置为 噪声 符号加载模式(调试器显示出它搜寻符号的信息)
设置为 安静 符号加载模式(默认)
x
x
[ 选项 ]
模块 ! 符号
x /t ...
x /v ...
x /a ...
x /n ...
x /z ...
审核符号 :显示与制定样式相匹配的符号
带数据类型
详情(符号类型与大小)
按地址分类
按名称分类
按大小分类(函数符号的大小是指函数在内存中的大小)
ln
ln 地址
列出最近的符号 = 显示在或接近给出地址的符号。用于:
1.
确定指针指向的位置
2.
当我们看到一个损坏的栈时确定是哪一个程序在调用
.sympath
.sympath
.sympath+
显示或设置符号的检索路径
向之前的符号路径追加目录
.sumopt
.symopt
.symopt+
标识
.symopt-
标识
显示当前符号选项
增加选项
移除选项
.symfix
.symfix
.symfix+ DownstreamStore
设置符号存储路径自动指向 http://msdl.microsoft.com/download/symbols
+ = 附加到现有的路径
DownstreamStore = 目录被用作下载存储。默认是 WinDbg 安装路径 \Sym
.reload
.reload
.reload [/f | /v]
.reload [/f | /v] 模块
从所有模块中重载符号信息 **
f = 强制立即加载符号(优先于延迟加载); v = 详细模式
模块 = 仅用于模块
** 注意: .reload 命令实际上并不会引起符号信息被读取。它只是让调试器知道符 号
文件可能已经改变, 或者一个新的模块将被加到模块列表中。 要强制符号加载的发 生
需要使用 /f 项,或是 ld (加载符号)命令
扩展
x *!
列出所有模块
x ntdll!*
列出 ntdll 的所有符号
x /t /v MyDll!*
列出 MyDll 的所有符号的数据类型、 符号类型和大 小
x kernel32!*LoadLib*
列出 kernel32 中所有包含 LoadLib 的符号
.sympath+ C:\MoreSymbols
从 C:\MoreSymbols (本地文件夹)中添加符号
.reload /f @"ntdll.dll"
立刻从 ntdll.dll 中重载符号
.reload /f @"C:\WINNT\System32\verifier.dll"
从 verifier 中重载符号。使用给出的路径
<< 返回顶部
<< 返回顶部
<< 返回顶部
同时检查 "!lmi" 命令
8)
8)
8)
8) 源码
命令
变型 /
/
/
/ 参数
描述
.srcpath
.srcpath
.srcpath+ 目录
显示或设置源码的检索路径
将目录添加到检索到的源码路径
.srcnoisy
{1
|
0}
控制噪声源码的加载
.lines
[-e | -d | -t]
切换源码行支持:启用;禁用;切换
l (小写 L )
l+l, l-l
l+o, l-o
l+s, l-s
l+t, l-t
显示行数
除了 [s] 隐藏一切
源码和行数
源码模式对汇编模式
9)
9)
9)
9) 例外、事件与事故分析
命令
变型 /
/
/
/ 参数
描述
g
g
gN
gH
运行
运行例外已处理
运行而不处理
.lastevent
发生了什么?显示最近的事件或例外
!analyze
!analyze -v
!analyze -hang
!analyze -f
显示当前例外或故障检查信息;详细
用户模式:分析线程栈以确认是否有哪个线程正阻止其他线程
查看例外分析,即便是调试器没有检测到例外
sx
sx
sxe
sxd
sxn
sxi
sxr
显示所有中断情况与处理的事件过滤器
中断首次偶然事件
中断第二次偶然事件
通知;不要中断
忽略事件
重置过滤器设置为默认值
.exr
.exr -1
.exr 地址
显示最近的例外记录
显示地址处的例外记录
.ecxr
结合当前例外显示例外环境记录(寄存器)
!cppexr
地址
显示 C++ 例外的内容与类型
扩展
.exr -1
显示最近的例外
.exr 7c901230
显示地址 7c901230 地址处的例外
!cppexr 7c901230
显示地址 7c901230 地址处的 C++ 例 外
10)
10)
10)
10) 加载模块与 映像 信息
命令
变型 /
/
/
/ 参数
描述
剩余21页未读,继续阅读
资源评论
- xingyun862013-12-13绝对的好东西,找了很久了。
MingSN91
- 粉丝: 1
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功