Created Feb 19, 2025 - Last updated: Feb 19, 2025
Evergreen 🌳
GDB
debug
#hello.c
#include <stdio.h>
int main(void) {
printf("Hello, Linux World!\n");
return 0;
}
#Makefile
hello:hello.c
gcc gcc -g -o hello hello.c
.PHONY: clean
clean:
rm hello
- 进入gdb
gdb ./hello
- 查看源码
(gdb)l
1 #include <stdio.h>
2 int main(void) {
3 printf("Hello, Linux World!\n");
4 return 0;
5 }
- 设置断点
(gdb)b 3
这样会在运行到源码第3行时停止,可以查看变量的值、堆栈情况等;这个行号是gdb的行号。
- 查看断点处情况
(gdb) info b
- 运行代码
(gdb) r
- 显示变量值
(gdb) p n
在程序暂停时,键入"p 变量名"(print)即可;
- 观察变量
(gdb) watch n
在某一循环处,往往希望能够观察一个变量的变化情况,这时就可以键入命令"watch"来观察变量的变化情况,GDB在"n"设置了观察点;
- 单步运行
(gdb) n
- 程序继续运行
(gdb) c
使程序继续往下运行,直到再次遇到断点或程序结束;
- 退出GDB
(gdb) q