大家好,我是极客范的本期栏目编辑小友,现在为大家讲解linux编程GDB调试功能问题。
GDB是一组字符接口组件,可以用来调试linux上的c和c程序。它提供以下功能:
1在程序中设置断点,当程序运行到断点时暂停。
2显示变量值。您可以打印或监控变量并显示变量值。
3单步。
4在运行时修改变量值。
5跟踪路径。
6线程切换。
等等
以下面的过程为例。
当我们使用GDB调试程序时,我们需要在用GCC编译时添加-g,如下所示:
GDB能够调试程序的原因在于编译时的-g选项。设置此选项后,GCC会在程序中插入一些信息,作为GDB调试的铺垫。
,然后GDB就可以利用这些伏笔和信息与程序进行交互。
进入GDB有两种方式,一种是直接在命令行进入gdb,然后在gdb中使用file命令加载要调试的程序:
另一种是直接在命令行上使用:gdb程序名。
这两种方法都是加载要在GDB调试的铺砌程序。
在GDB和加载程序之后,我们可以进行一系列的调试操作:
1使用“设置args参数值1参数值2 .”设置输入参数。
使用“列表开头的行号”打印内容。
列表中还可以选择一个间隔来打印代码:
3.用“B位置”设置断点。
4.使用“运行参数”运行程序。
5.使用“显示变量名”显示变量。
6.使用“c”继续运行程序。
7.使用set命令更改变量值。
使用q命令退出GDB。
使用p命令打印变量值。
10设置条件断点。
11使用delete删除断点。
12使用信息中断显示断点信息。
13.使用bt显示函数调用路径。
14使用whatis或ptype显示变量的类型。
GDB是一个字符接口的集合,可以在linux上使用。
调试C++和C++程序,它提供了以下的功能:1 在程序中设置断点,当程序运行到断点处暂停
2 显示变量的值,可以打印或者监视某个变量,将某个变量的值显示出来
3 单步执行
4 运行时修改变量的值
5 跟踪路径
6 线程切换
等等
下面以以下程序为例
当我们要使用GDB进行程序的调试时,在用GCC编译时需要加上-g,如下:
GDB之所以能够进行程序的调试也是在于进行编译时的-g选项,当设置了这个选项的时候,GCC会向程序中塞入一下信息,作为GDB调试时的铺垫
,然后GDB才能够利用这些铺垫和信息与程序交互。
有两种方式可以进入GDB,一种就是直接在命令行上输入gdb,然后再在gdb中用file命令加载要调试的程序:
另一种就是,直接在命令行上使用:gdb 程序名
这两种方法都是要在GDB中加载已经做了铺垫的将被调试的程序。
进行GDB并且加载了程序后,我们就可以进行一系列的调试操作了:
1 用"set args 参数值1 参数值2...."来设置输入参数
2用“list 开始的行号"来打印内容
list 还可以选取区间来打印代码:
3.用 ”b 位置"设置断点
4.用 “run 参数”来运行程序
5.用"display 变量名“来显示变量
6.用”c"来继续运行程序
7.用set命令来改变变量的值
8用q命令来退出GDB
9 用p命令来打印变量的值
10 设置条件断点
11 用delete删除断点
12 用info break 来显示断点信息
13.用bt来显示函数调用路径
14用whatis或者ptype来显示变量的类型
.dfma { position: relative; width: 1000px; margin: 0 auto; } .dfma a::after { position: absolute; left: 0; bottom: 0; width: 30px; line-height: 1.4; text-align: center; background-color: rgba(0, 0, 0, .5); color: #fff; font-size: 12px; content:"广告"; } .dfma img { display: block; }