gdb调试

1. 背景

2. 开始使用

3. 理解

自己总结

gdb会记住历史命令,按一次n,回车以后再回车还是n

-g才是debug

debug才有调试信息,默认的没有

mycode是可执行程序,再gdb这个可执行程序

q退出/quit

list或者l就能看到代码

l几就能看到第几行,l0后回车几下就能显示全部了

l add后加个函数名可以看函数

r从头一直到尾,开始运行相当于F5,

打断点,b+行号

info b,是查断点,退出重进就什么都没有了

d删除断点,这个意思是没有19这个,因为这个19是编号不是行号,d删除后面的数字是断点的编号,和取消常显示类似,不能直接取消那个字母,要用取消编号的方式

打完断点后,r在编号1的位置停下了,next/n(n是逐过程,相当于F10),按一下就就进入了下一行,并且会跳过空行

命中次数变成1了

s进入过程,逐行调试F11相当于,s进入函数后如果没有函数需要进入了,n和s就一样了F10和F11,也是如此

p相当于查看窗口

display i,可以常显示内容,边调试,边显示

取消常显示,不能直接取消那个字母,要用取消编号的方式,和删除断点的方式类似 

until,是直接到某一行,是为了跳过某个代码段,如果11行-13行是循环,那么until 14,就可以直接跳过循环,再p 一下查看结果就可以了

finish是用来跳过函数的,如果s进入了函数,进错了,就用finish直接就完成函数的运行了,如果有很多个函数可以用来检查错误,如果在函数里finish后,没有问题,那就说明这个函数没问题

c是从一个断点到另一个断点


disable暂时禁用断点,Enb的y也变成了n

回y就直接跳过1和2进去3了

enable 1,Enb就重新恢复y,就可以继续用这个断点了

b main直接在main出打断点,
不过是在第5行,花括号的下一行,有代码的行出

b和文件名➕冒号➕行数

b➕文件➕函数名也是可以的

set var修改变量的值

bt调用栈,比如:在main中bt就有in main这个,进入了一个函数再bt就有addToTop这个函数的,再进入addToTop这个函数中的函数就有了Print1,以此类推

 

gcc -g -o test test.c

  • 16
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值