2、gdb学习之主要调试器操作

上一节,我们学习了gdb的环境的安装和如何带gdb参数进行编译程序,这节,我们将学习gdb的一些基本操作,后面将对这些操作进行详细讲解。

单步调试代码

1)设置断点
断点用来指定程序暂停执行,gdb中使用break命令设置断点,也可以使用b这个简写,说明,以后遇见了简写的命令,我将使用命令(简写命令),,取消断点的命令是clear
2)单步调试
单步调试就是执行命令的下一条,在gdb中,单步调试的命令是next(n)和’step(s)’,nextstep的区别主要在于在执行调用函数操作时,step命令会进入函数内部,而next直接执行函数调用,暂停在函数调用的下一步。
2、gdb学习之主要调试器操作
可以一张图是用step命令后,调试程序进入了add函数内部,下面一张图使用的是next命令,程序直接执行add函数,然后暂停在调用语句的后面一条
2、gdb学习之主要调试器操作
3)恢复操作
在gdb中,使用continue(c)命令是程序继续执行知道下一个断点后者程序结尾。
4)检查变量
使用print(p)可以查看变量的值等信息,如下图
2、gdb学习之主要调试器操作
图中的$1表示调用会话的值历史。

4)设置监视点以应对变量值的改变
使用watch命令设置监听变量,当变量值发生改变是,暂停执行,例如
2、gdb学习之主要调试器操作
首先,我在15行设置了一个断点,当程序执行到15行时,暂停执行,同时将c设置为监听变量,当c的值发生改变时暂停执行,图中很奇怪为什么old value=32767,这是因为我们在声明c变量时没有初始化,c就读取了内存中的值,