什么是 GDB?
GDB(GNU Debugger)是一个强大的调试工具,主要用于调试 C、C++ 和其他语言编写的程序。
它让我们可以监控、控制程序的执行,从而查找并修复错误。
安装 GDB
ubuntu上一条命令可以搞定:
sudo apt install gdb
测试用例
我们写个简单的代码作为测试用例:
1 #include <stdio.h>
2
3 int main()
4 {
5 int var;
6 var = 10;
7 printf("var is %d\n", var);
8 return 0;
9 }
添加调试选项
为了能够使用GDB调试我们的代码,我们需要在编译时加上-g
选项,从而添加调试信息:
gcc -g gdb_test.c -o gdb_test.out
启动 GDB
使用以下命令启动 GDB,并指定要调试的可执行文件:
gdb ./gdb_test.out
基本命令
1. 运行程序
最基础的,使用run
命令执行程序:
(gdb) run
2. 设置断点
我们可以使用断点来暂停程序的执行,从而检查程序状态。
打断点的命令是 break
,可以指定函数名或行号:
(gdb) break 7 # 在第7行处暂停
Breakpoint 1 at 0x115c: file gdb_test.c, line 7.
需要先设置断点,再执行
run
3. 查看当前断点
可以使用 info breakpoints
命令查看当前断点信息:
(gdb) info breakpoints
Num Type Disp Enb Address What
1 breakpoint keep y 0x000000000000115c in main at gdb_test.c:7
4. 查看变量值
# 运行到断点
(gdb) run
Starting program: /home/ubuntu/gdb_test.out
Breakpoint 1, main () at gdb_test.c:7
7 printf("var is %d\n", var);
# 查看变量
(gdb) print var
$1 = 10
4. 继续执行
当程序在断点处暂停时,可以使用 continue
命令继续执行程序,直到下一个断点或程序结束:
(gdb) continue
Continuing.
var is 10
[Inferior 1 (process 139948) exited normally]
5. 单步调试
当程序在断点处暂停时,我们可以使用单步调试:
- 单步执行:使用
step
或s
命令逐行执行代码,遇到函数会进入函数内部:
(gdb) step
- 下一步执行:使用
next
或n
命令逐行执行代码,但是遇到函数不会进入函数内部:
(gdb) next
6. 退出 GDB
要退出 GDB,可以使用 quit
或q
命令:
(gdb) quit
小结
通过上面的操作,大家应该可以感觉到GDB在调试方面给我们带来的便利。
希望本文对大家有帮助,最后欢迎大家关注我的微信公众号《嵌入式三分钟》