Windbg常用命令

在Windbg的命令行窗口输入"?", 则会输出帮助菜单, 在这个Menu中会显示一些常用的命令:

  (1)断点指令
     B[C|D|E] [<bps>]
     clear|disable|enable breakpoints
 
     BL
     list breakpoints
 
     BP <address>
     set soft breakpoints
 
     BA <access> <size> <addr>
     break on access
 
  (2)数据查看指令
     D[type][<range>]
     dump memory
 
     DT [-n|y] [[mod!]name] [[-n|y]fields][address] [-l list] [-a[]|c|i|o|r[#]|v]
     dump using type information
 
     DV [<name>] 
     dump local variables
 
  (3)数据修改指令
     E[type] <address> [<values>]
     enter memory values
 
  (4)运行
     G[H|N] [=<address> [<address>...]] 
     go
 
     P [=<addr>] [<value>]
     step over
 
  (5)堆栈操作
     K[b|p|P|v]
 
  (6)显示加载的模块列表
     LM
     list modules
 
  (7)寄存器操作
     R [[<reg> [= <expr>]]]
     view or set registers
 
  (8)Search指令
     S[<opts>] <range> <values>
     search memory
 
  (9)跟踪指令T,TA,TB,TC,WT,P,PA,PC
 
  (10)退出
      Q

  (11)反汇编
      U[<range>]

其中最常用的就是反汇编操作和显示模块操作. LM命令显示当前加载的模块. 当你连接过程中, Windbg提示相应的module找不到时, 就可以运用这个命令进行查看. LM的一个扩展命令是"lm t n", 这个命令显示当前所有加载的驱动信息(过去的命令是!driver),在调试内核驱动的过程中非常有用,可以找到相应驱动的起始地址。反汇编命令u, 可以在相应的地址中逐步的解析代码,这在内核调试中是最常用的一种查看代码的方式。

除上面的一些基本命令之外,还有一些非常有用的指令:
 
  (1)K[KB|KP]
     显示当前的堆栈,当然也可以用alt+6直接调出窗口显示
 
  (2)!process
     显示当前的进程EXPROCESS状态,!process 0 0 显示所有的进程状态

  (3)!thread
     显示当前的线程状态,dt nt!_ethread显示ETHREAD结构

  (4)!drvobj [path]
     列出当前的驱动程序在驱动对象中的例程,其中path是驱动的设备路径,例如: !drvobj \filesystem\fat 2 列出FAT文件系统驱动的例程

  (5)dt nt!_*
     查看内核的数据结构
 
  (6)!stack 0
     显示线程当前地址
 
  (7)!ioapic
     查看I/O的中断控制器

  (8)!irql
     查看CPU的IRQL,这在CPU中断调试中非常有用

  (9)!exqueue
     可以看系统辅助的线程列表

  (10)!reg viewlist
     注册表的存储显示,!reg hivelist显示注册表一个存储的内存使用量

  (11)!vm
     显示系统的内存池信息

  (12)dt _TOKEN
     显示内部访问令牌

  (13)!object \device
     显示设备对象信息,用winobj工具也可以看到

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值