调试工具
在我们编写完程序之后,往往很难一次就实现我们所要实现的功能,特别是在进行一些大的程序的编写以及复杂的逻辑运算上,这时便需要一系列的调试过程,观察其运行状态发现出现问题的地方,这里我们主要使用gdb调试工具。
【要点一】
调试程序之前必须保证生成的是一个debug版本的程序,gcc默认生成的可执行文件是release版,我们可以使用 gcc -g +file±o+file.exe 命令生成debug文件。
[在Linux下可执行程序分为两大类,一是debug调试版,不对代码进行优化并且加入程序调试信息;二是release发布版,不包含调试信息,并且会对代码进行优化。]
【要点二】
gdb常用调试指令
流程控制
1. gdb +文件(debug版本) :调试命令
2. run :直接运行程序,简写 r 。
3. start:开始逐步调试。
4. list: 查看调试行附近代码 简写 l。 【示例】:list code.c:12 查看第十二行附近代码。
5. next: 下一步,逐过程调试,遇到函数直接运行完毕,简写为 n 。
6. step: 下一步,逐语句调试,遇到函数进入函数中逐语句调试执行,简写 s 。
7. until: 直接运行到指定的位置。 【示例】until code.c:12 直接运行到12行。
8. continue: 从当前位置继续运行,直到执行完毕或者遇到断点。简写 c。
9. break: 对文件指定行打断点。简写 b 【示例1】break code.exe:6 给程序的第六行打断点; 【示例2】break function_name 直接给函数第一行打断点。
10. info break 查看断点信息,简写 ib
11. delete 删除断点 ,简写 d【使用格式 】delete + 断点ID
12. watch 变量监控点,当变量发生改变时停下来 【使用格式】watch+变量名称
内存控制
1. print: 查看或设置变量内容,简写为 p【使用格式】print +变量名 或者 print 变量名=变量值
2. backtrace: 查看函数调用栈,通常用来检测程序运行时的崩溃位置。简写 bt ,此时栈顶函数的位置就是程序出错的位置。