gdb调试器中的常用快捷键

Gdb调试器的小结:

 

1.gdb <program>

输入gdb <program>方式启动gdb后,gdb会在PATH路径和当前目录中搜索<progma>的源文件,如果要确认gdb是否读到源文件,可使用l或list命令,看看是否能够列出代码,使用 r/run 命令可以运行程序。

2.寄存器

对于调试来说寄存器中的值也很重要,可以查看到当前正在执行的指令的地址等,具体操作如下:

(1)i r:显示所有寄存器(查看具体寄存器的内容,这里以eax为例:i $ eax)

(2)p $eax:打印eax寄存器的内容

(3)p/c $eax:用字符显示eax寄存器的内容

斜杠后边是显示格式,具体如下:

x      显示为十六进制数

d     显示为十进制数

u     显示为无符号十进制数

o     显示为八进制数

t      显示为二进制数

a      显示为地址

c      显示为字符(ASCII)

f      显示为浮点小数

s      显示为字符串

i       显示为机器语言(仅在显示内存的x命令中可用)

3.对变量的操作

(1)p <变量名>:打印变量

(2)set var <变量>=<表达式>:将变量的值设定为指定表达式的值

(3)print <变量> = <表达式>:查看并修改变量

4.断点

gdb中用break命令来设置断点,设置断点的方法包括:

   b <函数名>:对当前正在执行的文件中的指定函数设置断点。

b <行号>:对当前正在执行的文件中的特定行设置断点。

b <文件名:行号>:对指定文件的指定行设置断点。最常用的设置断点方式。

b <文件名:函数名>:对指定文件的指定函数设置断点。

b <+/-偏移量>:当前指令行+/-偏移量出设置断点。可简写为:b <+/-偏移量>

b <*地址>:指定地址处设置断点。

   tb<函数名>:设置临时断点,只生效一次。

查看、删除断点

i b:显示所有断点以及监视点

d <编号>:删除编号指向的断点或者监视点

c <行号>:删除改行的断点。

c <文件名:行号>:删除某个文件的改行的断点

5监视点

Watch <表达式>:表达式发生变化时暂停

awatch <表达式>:表达式访问或者改变时暂停

rwatch <表达式>:表达式被访问时暂停

info  watchpoints:列出当前所设置的所有监视点

6.list命令:

l n:显示程序第n行周围的代码

l <函数名>:显示该函数的源程序

list:显示当前行后面的代码

list -:显示当前行前面的代码

7.单步命令:

1next <行数>(简写 n <行数>):单步跟踪,如果有函数调用,不会进入函数内部。next 后边不加行数表示逐条执行,加上行数,表示执行后边的指定行数的指令,然后载停止。(s:也是单步执行遇到函数调用会进入函数内部)

2until(简写:u:可以运行程序直到退出循环体

3continue(简写:cfg命令同continue):当程序被停住后,使用该命令恢复程序的运行直到程序结束,或到达下一个断点

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值