GDB调试的基本命令使用。

一.GDB基本命令
1.bt –查看各级函数调用及参数重点内容
2.frame (f)–选择栈帧
3.finish–继续运行直到函数结束
4.list(l)–列出代码,每次10行,l 10可以从第10行开始往下再显示代码
5.next–单步执行,但是不会进入函数
6.s–(step)详细的单步执行
7.i locals –显示值
8.p–(print)显示值,如p a 显示变量a的值
9.b –(break)设置断点,b 12可在12行暂停。
10.q–(quit)退出gdb调试。
11.run–运行
12.c–(continue)继续执行。
13.display–跟踪变量
14.witch–设置观察点,i witchpoints显示观测点。
二.简单实例解析
1.首先我们写一个gdbtest.c文件
这里写图片描述
2.gcc -o gdbtt gdbtest.c -g(-g是方便我们进入gdb进行调试),编译成功没有问题,我们./gdbtt运行,输入6,发现得到的结果不是我们想要的结果。
这里写图片描述
3.为解决问题,我们进入gdb调试,进入gdb调试gdbtt的方法有两种,(1)在终端gdb进入gdb调试,然后file gdbtt打开(2)在终端gdb gdbtt进入gdbtt调试
这里写图片描述
4.为了解决问题,我们用start开始单步执行,由于gdb版本问题的话,可以先用l查看代码,然后用b设置断点。由于程序从mian()开始执行,于是在11行设置断点,b 11,然后run开始单步运行。
这里写图片描述

这里写图片描述
5.然后继续s命令往下执行,输入n为6
这里写图片描述

6.用i locals查看函数test()的变量值
这里写图片描述
7.用finish命令执行完成循环,查看return的值

这里写图片描述
8.从这里我们看出了问题在与没有给sum初始化,导致sum的值是一个随机数。当我们给sum=0;时问题就解决了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值