Linux开发工具(下)

发布时间:2026/10/29 1:44:01
Linux开发工具(下)

1. 调试器 gdb/cgdb的概述

在 VS 中我们已经知道有 Debug 和 Release 两种发布模式,而想要进行程序的调试就必须在 Debug 模式下进行程序调试。而在Linux中,gcc/g++出来的二进制程序,默认是Release模式。要使用gdb调试,必须在源代码生成二进制程序的时候加上-g选项。

上面是没有加-g选项时进行调试的情况,是无法进行调试的。

2.gdb的一些基础指令

(1)l/list:显示源代码,从上次的位置开始,每次显示10行。

也可以在l后面加文件名加 :加行号,表示显示指定文件中的源代码。

也可以在l后加函数名,表示显示指定函数的源代码。

(2)quit:退出调试

(3)r/run:从程序开始连续执行。

(4)b/break [文件名:] 行号:表示在相应的行号处设置断点(这里的方括号中的内容可加可不加)。

(5)info b/break:表示查看全部断点信息。

(6)d/delete n:删除序列为n的断点(这里的断点序列为上面图片中的断点信息中的最左侧一列的序号)

(7)c/continue:表示从当前位置开始连续执行程序。

(8)n/next:逐过程调试,类似vs中的f10。

(9)s/step:逐语句调试,类似vs中的f11。

(10)p+变量:打印指定变量的值。

(11)finish执行到当前函数返回,然后停止。

(12)disable+n:表示禁用断点编号为n的断点。

(13)enable+n:启用断点编号为n的断点。

(14)until+n:执行到指定行号。

(15)display+变量:跟踪显示指定变量的值。

(16)undisplay+编号:取消对应编号的跟踪显示。

(17)info locals:显示当前函数内的所有临时变量。

3.gdb中常用的技巧

(1)watch

执行时监视一个表达式(如变量)的值。如果监视的表达式在程序运行期间的值发生变化,GDB会暂停程序的运行并通知使用者。

因此当我们进行调试时,非常在意一些变量的变化的时候就可以使用watch进行对这些变量的监视。当我们不再想要监视时,可以像删除断点一样用d+编号,对监视目标进行删除。

(2)set var

当我们大致知道程序中代码问题出现在哪里时,我们需要退出调试进行源代码的修改再进行调试确认代码是否无误,这样比较麻烦,这时候就可以使用set var直接在调试的时候进行代码的修改。

(3)条件断点

添加条件断点:b+行号+if+条件

给已经存在的断点添加条件:condition+编号+条件