什么是gdb
gdb是一个用来调试C和C++程序的调试器,能通过它进行一系列调试工作,包括设置断点、观查变量、单步等;
使用须知:
- 程序的发布方式有两种,debug模式和release模式;
- Linux gcc/g++出来的二进制程序,默认是release模式;
- 要使用gdb调试,必须在源代码生成二进制程序时,加上-g选项;
使用步骤及命令:
- 编译源程序,gcc -g file.c;
- 使用gdb调试,gdb a.out;
- 退出gdb,ctrl + d或quit;
gdb中的命令:
- list/l 行号 显示源代码,接着上次的位置往下列,每列10行;
- list/l 函数名 列出某个函数的源代码;
- r/run 运行程序;
- n/next 单条执行,不会进入函数调用;
- s/step 进入函数调用;
- break(b) 行号 在某一行设置断点;
- info break 查看断点信息;
- finish 执行到当前函数返回,然后停下来等待命令;
- print(p) 打印表达式的值,通过表达式可以修改变量的值或者调用函数;
- p 变量 打印变量值;
- set var 修改变量的值;
- continue/c 从当前位置开始连续而非单步执行程序;
- delete breakpoints 删除所有断点;
- delete breakpoints n 删除序号为n的断点;
- disable breakpoints 禁用断点;
- enable/i breakpionts 查看当前设置了哪些断点;
- display 变量名 跟踪查看一个变量,每次停下来都显示它的值;
- undisplay 取消对先前设置的哪些变量的跟踪;
- until 行号 跳转至某一行;
- breaktrace/bt 查看各级函数调用及参数;
- info/i locals 查看当前栈帧局部变量的值;
- quit 退出;