gdb使用记录

要想使用gdb调试,在编译的时候必须加上-g选项,这样才能加入调试信息,让gdb可以正常工作。

gdb+可执行文件:开始调试该可执行文件

1. r:执行run,到断点处暂停


2. c:继续运行


3. 设置断点:

b+函数名:

b+行号:

b+偏移量:

b-偏移量:

b+地址:


4. 删除断点:

d+断点标号n:删除第n个断点

d:删除所有的断点



5. q:退出gdb


6. 查看当前设置的断点信息:

info+b


7. 禁用某个断点:

disable+断点号


8. 开启某个断点;

enable+断点号


9. 查看源代码:

list:查看代码执行位置附近的10行,假设11-20

list+line_number:查看line_number附近的10行代码

list -:查看上一个list命令查看的代码之前的10行

list 1,10:查看1到10行的代码

list main:查看main函数周围的10行代码

list hello.c:13:查看hello.c文件的第13行周围的10行的代码

list hello.c:print:查看hello.c文件的print函数周围10行的代码


10.  watch的使用:

watch用来监视当前环境下的变量的变化情况,当前环境是指比如一个函数体内的所有变量=参数+局部变量+全局变量:

首先要使用break在要观察的变量上设置一个断点;

使用run,执行到该断点处;

使用watch,设置好要监视的变量;

使用continue,观察变量每一步的变化情况,即只要变量发生变化就输出一次新旧变化的情况;


11. s、n和si、ni的使用:

s:相当于其它调试器中的“Step Into (单步跟踪进入),执行一行源程序代码,如果此行代码中有函数调用,则进入该函数;

n:相当于其它调试器中的“Step Over (单步跟踪),执行一行源程序代码,此行代码中的函数调用也一并执行;

si:类似于s命令,不同之处是s针对的是源代码,而si针对的是汇编命令;

ni:类似与n命令,不同之处是n针对的是源代码,而ni针对的是汇编命令 ;

si N:一次执行N条会汇编指令;


12. x的使用:

x是examine的缩写,用来查看内存。

格式:x/nfu address

(1)n表示要显示的内存单元格数;

(2)f表示显示方式, 可取如下值:

x 按十六进制格式显示变量;
d 按十进制格式显示变量;
u 按十进制格式显示无符号整型;
o 按八进制格式显示变量;
t 按二进制格式显示变量;
a 按十六进制格式显示变量;
i 指令地址格式;
c 按字符格式显示变量;
f 按浮点数格式显示变量;

例如:

x/3x:从当前地址向后显示3个内存单元的内容,以16进制显示变量;gdb默认是4个bytes为一个内存单元。

(3)u表示一个地址单元的长度,可取如下值:
b表示单字节;
h表示双字节;
w表示四字节;
g表示八字节;

例如:

x/i 0xffff0:即查看物理地址为0xffff0处的汇编指令;






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值