课堂测试

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的强大功能。加油!

测试过程截图

80ac619df58fc38b3154f845fa6110ee
编译运行所给的代码
ed063ebd391f80719d8efd267c914920
21cc3a028937183de0a36b1902695b0e
c75326f74a38358f00ece9a505821f55
9bfea67c0562f81901f233335b71920c
通过gdb工具进行调试的过程

posted on 2025-09-25 15:01  20231406王浩霖  阅读(3)  评论(0)    收藏  举报

导航