课堂测试
GDB调试器学习指南
浩霖同学,你好!
今天我们来学习一个非常重要的开发工具——gdb调试器。我知道你未来要在国产化操作系统上工作,所以我特别推荐你使用openEuler系统来练习,这对你将来的就业会很有帮助。
为什么要学习gdb调试?
想象一下,你写的程序出现了问题,但光看代码又找不到原因,这时候gdb就像是一个"程序侦探",能帮你一步步追踪程序的执行过程,找到问题的根源。
常用gdb命令一览
命令 | 功能描述 |
---|---|
help |
帮助手册,查看所有命令分类 |
run |
启动程序运行 |
break |
设置断点,让程序在特定位置暂停 |
continue |
从断点处继续运行 |
next |
执行下一行代码(不进入函数) |
step |
执行下一行代码(会进入函数) |
until |
运行直到某一行 |
finish |
执行完当前函数 |
display |
持续显示某个变量的值 |
print |
打印变量或表达式的值 |
实际操作演示
1. 创建测试文件
vim testgdb.c
输入以下代码:
#include <stdio.h>
int add(int a, int b) {
int sum = a + b;
return sum;
}
void print_numbers(int n) {
for(int i = 0; i < n; i++) {
printf("%d ", i);
}
printf("\n");
}
int main() {
int x = 5;
int y = 10;
int result = 0;
printf("程序开始执行\n");
// 函数调用
result = add(x, y);
printf("两数之和: %d\n", result);
// 循环结构
printf("打印数字: ");
print_numbers(5);
// 条件判断
if(result > 10) {
printf("结果大于10\n");
} else {
printf("结果小于等于10\n");
}
printf("程序执行结束\n");
return 0;
}
2. 编译程序
注意: 编译时记得加上 -g
选项,这样才能使用gdb调试:
gcc -g testgdb.c -o testgdb
3. 启动gdb调试
gdb ./testgdb
4. 设置断点
在gdb中,我们可以设置多种类型的断点:
行断点(在第20行设置断点):
(gdb) break 20
函数断点(在add函数处设置断点):
(gdb) break add
临时断点(只生效一次):
(gdb) tbreak 25
条件断点(当i等于3时触发):
(gdb) break 12 if i == 3
5. 运行和调试程序
运行程序:
(gdb) run
程序会在第一个断点处暂停,这时我们可以:
- 使用
next
单步执行(不进入函数) - 使用
step
单步执行(进入函数内部) - 使用
continue
继续运行到下一个断点 - 使用
until 15
运行到第15行 - 使用
finish
执行完当前函数
6. 查看变量值
(gdb) print x
(gdb) display y
学习建议
浩霖,调试技能是程序员的核心能力之一。记住这些命令的组合使用,比如先设置断点,然后运行,再单步跟踪,查看变量变化,这样你就能真正理解程序的执行流程了。
多练习几次你就会发现,原来复杂的程序执行过程变得如此清晰可见。刚开始可能会觉得有点难,但只要坚持练习,很快就能掌握这个强大的工具。
现在你可以在openEuler系统上实际操作一遍,感受一下gdb的强大功能。加油!
测试过程截图
编译运行所给的代码
通过gdb工具进行调试的过程
posted on 2025-09-25 15:01 20231406王浩霖 阅读(3) 评论(0) 收藏 举报