)
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)disablen表示禁用断点编号为n的断点。(13)enablen启用断点编号为n的断点。(14)untiln执行到指定行号。(15)display变量跟踪显示指定变量的值。(16)undisplay编号取消对应编号的跟踪显示。(17)info locals显示当前函数内的所有临时变量。3.gdb中常用的技巧(1)watch执行时监视一个表达式如变量的值。如果监视的表达式在程序运行期间的值发生变化GDB会暂停程序的运行并通知使用者。因此当我们进行调试时非常在意一些变量的变化的时候就可以使用watch进行对这些变量的监视。当我们不再想要监视时可以像删除断点一样用d编号对监视目标进行删除。(2)set var当我们大致知道程序中代码问题出现在哪里时我们需要退出调试进行源代码的修改再进行调试确认代码是否无误这样比较麻烦这时候就可以使用set var直接在调试的时候进行代码的修改。(3)条件断点添加条件断点b行号if条件给已经存在的断点添加条件condition编号条件