WinDbg学习笔记整理

转载 2012年03月26日 08:56:47


转http://www.vcfans.com/2010/04/windbg-study-notes-order.html

去年看WinDbg帮助时随手记下来的一点资料,放上来保存一下,有新内容我会陆续更新上来。

1. 命令行前数字的含义
用户调试模式下,如2:005, 2表示进程ID,005表示线程ID
内核调试模式下,将显示kd>, 如果是多核处理器将显示0: kd> 0:表示当前运行在哪核处理器上。

2. 命令输入时,支持UP,DOWN,TAB键联想,可以使用TAB键进行通配符的联想。

3. Enter键,在命令行没有命令输入时,执行上一条命令。

4. Ctrl+C 终止一段长时间执行的命令

5. .cls 清除命令行的显示结果。

6. WinDbg启动时增加-Q参数,在WinDbg退出后将不提示保存当前的工作环境的对话框。如果使用-QY将在退出WinDbg后,自动保存当前的配置环境。

7. 调试命令之执行命令

Ctrl+C 停止
.restart 重新启动程序 快捷键Ctrl+Shift+F5
g 执行程序 快捷键F5
gc 恢复执行,当被条件断点中断后。
gh 等同于g命令,但当有异常时需要对异常进行处理
gn 直接运行等同于g命令,但忽略异常

gu 执行到当前函数结束, 快捷键shift+F11
p 逐条运行,遇到Call直接步过, 快捷键 F10
pa 执行到指定地址
pc 执行到下一个Call的入口
pct 执行到下一个Call的入口或执行到当前函数的反回处。
ph 执行到下一个跳转处
pt 执行到返回

t 单步执行
ta 单步执行到指定地址
tb 单步执行到分支处
tc 单步执行到下一个Call的开始,如果当前指令就是一个Call,执行完此Call,再停在下一个Call的开始处。
tct 单步执行到下一个Call的开始或返回处。

8.调试命令之断点

bl 列取已下的断点,以及其状态
.bpcmds 简单列表显示断点

bp/bu/bm 设置一个断点
bp: 可以对地址(bp 0×1234567)以及符号(bp thApp!somefunction)下断点,对于使用对符号下断点,如果符号了修改,断点依然存在,但不一定有效,另外bp并不会保存到workspace中。
bu: 可以对某一符号下断点(bu theApp!somefunction),如果该地址的代码修改后,断点作相应的更新修改。bu下的断点将会保存到Workspace中,下次启动时会自动载入。
bm: 可以对某一符号下断点,但支持通配符,如bm theApp!funcDel*

ba 在指定地址设定访问方式断点,w(写方式),e(执行方式),r(只读方式),ba w4 0×123455 其中的4表示的字节宽度。ba下的地址断点一定要下到指令的开始处,否则不会执行。
bc 清除指定断点,可以单独指定断点编号,可以是一个编号范围
bd/be 关闭断点/打开断点
br 重新指定断点编号。br OldID NewID

9.调试命令之内存读写
d* 读取内存数据
da 显示Ascii码
db 显示字节和ascii码
dc 显示双字(4个字节)和Ascii码
dd 显示双字
dD 显示双精度浮点数
df 显示单精度浮点数
du 显示unicode
dw 显示一个字

e* 向内存写入数据,e后面的字符意思参考d*

dt 显示指定变量的数据,比如结构体之类的

ds/dS 显示字符串,前者显示ascii,后者显示unicode的字符串。
dl 显示一个链表数据
!address 显示目前进程的内存或计算机的内存使用情况
s 搜索内存

dv 显示局部变量

!for_each_local dt @#Local 枚举当前栈空间所有局部变量值,注意@#Local的大小写。

!db/!dc/!dd/!dp/!du/!dw 读取物理内存
?GlobalVar 查看全局变量地址,通过?获得地址后,通过dd查看相应的值
$!LocalVar 查看局部变量地址,通过$!获得地址后,通过dd查看相应的值

10. 调试命令之记存寄器

r 设置和修改寄存器

11. k命令显示调用栈
kb 显示被调用函数的前三个参数
kp 如果有私有pdb的话,将显示函数原型的格式显示出来。

12. u/uf 显示反汇编

13. q 结束调试

14. lm 显示所加载的模块,lml列出所有已加载符号的模块。lmvm 列出所加载模块的详细信息

15. vertarget 显示当前加载进程实例的一些信息,

16. !peb (process environment block )显示当前进程的运行环境

17. .reload 重新加载模块的符号。在加载前可以先打开symbol的noisy模式(命令: !sym noisy),显示加载详细信息

18. !runaway显示当前进程中线程运行情况

19. dds用来显示当前内存的数据和相对应该的符号

20. ~<线程号>s 用来切换当前线程,如~0s将线程切换到ID为0的线程中。

21. .frame 切换到当前函数栈中,num为栈的编号,可以通过knL列出当前所有栈调用以及其编号。然后通过x列出所有局部变量地址。

22. wt (watch and trace data) 跟踪一个函数调用子函数的数量,可以通过-l设定Trace的层数

23. ln 用来显示指定地址附近的符号

24. !sym 列出当前模块的符号目录
!sym noisy打符号处理的提示开关,比如显示载入失败等信息,与之相反的为!sym quiet
!sympath <符号目录> 来添加符号目录,然后使用.reload/.restart重新载入模块

25. sx列出系统异常设置状态

26. l+t:进入源代码级的单步执行模式, l-t:进入汇编级的单步执行模式

作者:lonkil | 分类目录:本站原创编程开发 | 标签: 调试软件逆向

WinDbg学习笔记整理 (zz)

WinDbg学习笔记整理 2010-04-23 //z 2012-08-13 18:15:41 IS2120@csdn.T564578150 [T93,L1440,R37,V861] 去年看Wi...
  • is2120
  • is2120
  • 2012年08月13日 18:11
  • 1229

live555的有关代码学习笔记整理

一直很想做流媒体的直播,最近花时间看了有关live555的有关代码,这里隆重的推荐两篇:      http://blog.csdn.net/nkmnkm   (道长的文章,分析的很不错)   ...
  • sanmaoljh
  • sanmaoljh
  • 2015年10月07日 14:46
  • 286

3dmax笔记

1、用到最多的是平滑、线框和高光
  • luyuncsd123
  • luyuncsd123
  • 2013年12月07日 13:17
  • 628

WPF资源基础笔记

资源 WPF资源系统是一种保管一系列有用对象的简单方法,从而可以更容易的重用这些对象。 应用程序资源和程序集资源是不同的概念。 应用程序资源:可在应用程序中的其他部分使用。 程序集资源:是一块...
  • u011626294
  • u011626294
  • 2014年02月24日 12:41
  • 521

11.06笔记整理、作业以及学习心得

11.06课堂笔记及作业1、盒子模型内外边距和边框介绍当浏览器展现一个元素时,这个元素会占据一定的空间。这个空间由四个部分组成: 1. Margin 2. Border 3. Paddin...
  • huqiang0816
  • huqiang0816
  • 2017年11月06日 23:58
  • 36

myBatis学习笔记(1)——快速入门

在项目中使用myBatis 导入jar包 在src下创建配置文件
  • u010837612
  • u010837612
  • 2015年05月12日 11:06
  • 936

Deep Learning(深度学习)学习笔记整理系列(三)

Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version...
  • lcj_cjfykx
  • lcj_cjfykx
  • 2015年02月25日 13:43
  • 1285

live555学习笔记-几个重要对象的生命期

几个重要对象的生命期 live555中很多类,类与类之间的关系复杂,从属关系不明显,层次上看起来也有些乱.所以源代码读起来比较困难,对于一些对象生命的来龙去脉也很难厘清. 但这并不能说明live5...
  • Runningzyx
  • Runningzyx
  • 2016年09月19日 11:16
  • 362

TD-LTE学习笔记1

1、TD-LTE和LTE FDD的网络架构相同,不同之处主要体现在双工方式和工作频段,因此在整个网络架构中仅仅在eNodeB的设备实现方面存在差异,如滤波器、环形器和双工器等射频前端器件。 2、RS...
  • ymaym
  • ymaym
  • 2014年04月10日 09:39
  • 2510

JS基础学习笔记整理

JavaScript是一种基于对象的脚本编程语言,是浏览器上的程序语言。当web容器输出内容到浏览器时,这个内容是包含js源代码的,此时,JavaScript可以操作浏览器上的一切内容,在浏览器上提供...
  • laoma4102
  • laoma4102
  • 2011年12月30日 13:30
  • 7101
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WinDbg学习笔记整理
举报原因:
原因补充:

(最多只允许输入30个字)