GDB(六) 断点

10 篇文章 0 订阅

断点有三种类型:

  1. breakpoint在程序到达某个特定的点时中断。
  2. watchpoint在一个变量或表达式的值发生改变时中断。
  3. catchpoint当一个特定的事件发生时中断。

对于breakpoint,有两种原因导致GDB没有停在设置中断点的位置。一、由于编译器的优化,代码在程序里没有对应的机器指令;二、不是所有的代码都会编译成机器指令,比如变量声明。通常这种情况下,程序会中断在离中断点最近的下方的有对应机器指令的源码行。

你设置的每个breakpoint、watchpoint和catchpoint都被赋予一个从1开始的编号。你使用这个编号来标识断点。

info breakpoints可以列出当前所有设置的断点。 也可以简写为i b。GDB里的命令都可以用首字母或前几个字母来简写。

info b
Num     Type           Disp Enb Address    What
1       breakpoint     keep y   0x0804865d in main at test_insert_sort.c:16
    breakpoint already hit 1 time
2       breakpoint     keep y   0x00131464 <insert_sort_array+6>
3       hw watchpoint  keep y              n

可以用disable n命令来禁掉编号为n的断点,用enable n命令重新启用断点。

gdb> disable 2
gdb> i b
Num     Type           Disp Enb Address    What
1       breakpoint     keep y   0x0804865d in main at test_insert_sort.c:16
    breakpoint already hit 1 time
2       breakpoint     keep n   0x00131464 <insert_sort_array+6>
3       hw watchpoint  keep y              n
可以看到第2个断点已经被禁用了。

break n在当前文件的第n行设置断点,比如break 9。

break function在函数上设置断点。

break +n在当前行(中断时所在的行)的后n行加上断点。

break -n在当前行的前n行上加上断点。

break file:function在文件里的函数上加断点。

break *address在地址上加断点。

不带参数的break在当前行加上断点。

break可以选择性地中断,使用break n if ...的形式。比如 b 13 if i > 5,

5       breakpoint     keep y   0x080486d2 in main at test_insert_sort.c:27
    stop only if i>5

continue恢复中断程序的执行

tbreak可以设置一个临时的断点。它一旦被击中就会被删除,下次就不会再断在这个点上。

4       breakpoint     del  y   0x08048662 in main at test_insert_sort


ignore n count可以忽略第n个断点后的count个击中

2       breakpoint     keep n   0x00131464 <insert_sort_array+6>
    ignore next 1 hits

clear可以删除断点,是break的逆过程

clear *0x80483f4删除地址上的断点。

clear 4删除第4行的断点。

clear main删除main函数上的断点。

不带参数的clear会删除当前行的断点(中断的时候所在的行)。

delete也可以删除断点,但是它的参数是断点的编号,比如delete 5删除第5个断点。

不带编号的delete删除所有的断点。

finish可以运行当前函数,直到它返回。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值