linux调试c程序断点设置,linux c之gdb常用断点调试总结

1 、安装GDB

sudo apt-get install gdb

2 、怎么打断点

1 、源文件的某一行设置断点

break 行号

2、一个特定的函数设置断点

break 函数名

3、设置条件断点

break 行号 if 条件

3、举例分析

hello2.c源文件如下

#includeint main() {

int a = 1, b = 2, c = 3;

int i;

printf("hello chenyu");

for (i = 0 ; i < 100; i++) {

++a;

if (i > 90) {

++b;

} else {

++c;

}

}

printf("a = %d, b = %d, c = %d", a, b, c);

int cc = 0;

for (cc; cc < 9; cc++) {

printf("c %d", i);

}

return 0;

}

比如我们在 ++b (第10行)这行和printf("c %d", i)(第18行)这两行打断点命名如下

1、编译

gcc -g hello2.c

2、gdb调试

gdb hello2

3、显示代码行数命令如下

list3次回车

4 、然后输入下面打断点命令

break 10

break 18

图片如下:

314c0d5ed8489deb67828721036acb40.png

5 、 运行并且跳转到断点

1、运行

start

2 、跳转到断点命令(countine 简写c)

c

程序就到到++b 这行来,上面2个步骤也可以用这个run (简写 r)命令代码

r

d3afa40050239679157d457342204f98.png

我们这里代码会跳到这个断点里面来,我么就避免了手动循环这么多次,因为这个断点会打很多次,所以我们可以用c命令,还是会在这行,所以打断点一般不要打在循环里面,当这个代码执行完之后,我们再用c命令,就会打印18行的代码

9be5cf447801efdef675f2f8d0342256.png

我们也可以用watch命令来观察变量,如果变量的值发生变化,程序就会停止

watch b

我么看变量的值或则单个变量的值可以用下面命令

i locals

p c

82165ce263ec4adae0b2661b6c860a81.png

进入函数内部用下面命令

s

单步调试往下执行用下面命令

n

删除断点

delete 行号

退出gdb命令

quit

4、如何保存断点

有时候运行时,上次打的断点没了,怎么保存呢?

1、查看断点信息并保存

info b

6d6b9b29530b012698071a9bbd0ac230.png

2 、保存断点

save breakpoint fig.dp

断点保存在fig.dp文件里面

3、调试时候读取保存断点文件

gdb hello2 -x fig.dp

要记住加上参数 -x

然后再去查看是否有断点

info b

a5644dc62da6704905f69b514de65a77.png

可以看到是有2个断点的

5、总结

学会了gdb打断点的基本命令,还有一些调试手段,以及断点的保存。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值