代码改变世界

Windbg常用命令

2013-07-27 11:16  鉴于  阅读(487)  评论(0)    收藏  举报

!analyze –v        显示当前异常的信息

.sympath[+] [Path [; ...]]

用于添加或设置符号路径或显示当前的符号路径

.symfix[+] [LocalSymbolCache]

用于将符号路径设置为微软网站上的符号存储位置

.srcpath[+] [Directory [; ...]]

.lsrcpath[+] [Directory [; ...]] (只能在Windbg中使用,并且不能在脚本中使用)

设置或显示源代码搜索路径

x [Options] Module!Symbol x [Options] *

显示模块中的符号

例如: 显示calc中D开头的符号

0:003> x calc!D*

00000000`ff211e24 calc!DlgProc (<no parameter info>)

00000000`ff22a038 calc!Deletegloballocale (<no parameter info>)

……

d{a|b|c|d|D|f|p|q|u|w|W} [Options] [Range] dy{b|d} [Options] [Range] d [Options] [Range]

d* 显示特定范围的内容

.reload [Options] [Module[=Address[,Size[,Timestamp]]]]

.reload –?

删除指定模块里的所有符号,并重新加载符号

例如:

0:000> .reload /u ntdll.dll

Unloaded ntdll.dll

.process [/i] [/p [/r]] [/P] [Process]

指定使用哪个进程的内容

!process [/s Session] [/m Module] [Process [Flags]]!process [/s Session] [/m Module] 0 Flags ImageName

扩展了进程信息的显示,内核模式命令

例如:

!process 0 0

列出所有进程和普通属性

dt [-DisplayOpts] [-SearchOpts] [module!]Name [[-SearchOpts] Field] [Address] [-l List]

dt [-DisplayOpts] Address [-l List]

dt –h

显示简单类型的数据,包括结构体和联合体

!thread [-p] [-t] [Address [Flags]]

内核态命令,扩展显示线程信息

!handle [Handle [UMFlags [TypeName]]]   

!handle –?                                                                 

!handle [Handle [KMFlags [Process [TypeName]]]]

!handle用于显示进程中句柄信息


线程句法规则

~.      当前线程

~#     触发异常或者调试事件的线程

~*      进程中所有线程

~Number            索引为Number的线程

~~[TID]              ID为TID的线程

~[Expression]

!object Address

!object 0 Name

!object Path

!object –r

!object用于显示系统对象信息

g(G0) 用于开始执行指定进程和线程

用户模式
[~Thread] g[a] [= StartAddress] [BreakAddress ... [; BreakCommands]]
内核模式
g[a] [= StartAddress] [BreakAddress ... [; BreakCommands]]

p(Step) 单步执行一条指令或源码行
用户模式
[~Thread] p[r] [= StartAddress] [Count] ["Command"]
内核模式
p[r] [= StartAddress] [Count] ["Command"]

Windbg全部命令介绍 http://msdn.microsoft.com/en-us/library/windows/hardware/ff540507(v=vs.85).aspx