Linux 应用开发 - 15 个 gbd 调试基础命令

本文介绍了Linux下调试工具GDB的使用,通过15个基本命令,包括编译可调试程序、载入、查看、添加、删除断点、运行、单步执行等功能,帮助开发者掌握命令行调试技巧。通过熟悉这些命令,开发者可以在Linux环境中更高效地进行程序调试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

gdb 简介

gdbUNIXUNIX-like 下的调试工具,在 Linux 下一般都直接在命令行中用 gdb 来调试程序,相比 Windows 上的集成开发环境 IDE 提供的图形界面调试,一开始使用 gdb 调试可能会让你感到生无可恋,但是只要熟悉了 gdb 调试的常用命令,调试出程序会很有成就感,一方面因为这些命令就类似图形界面调试按钮背后的逻辑,另一方面用命令行来调试程序,逼格瞬间就上了一个档次,这次就跟大家分享 gdb 调试的基本技术和 15 个常用调试命令

在此之前,我们先来回顾下在 Windows 上使用 IDE 的图形界面调试过程。

IDE 的调试步骤

在 Windows 的 IDE 下调试程序,例如使用 VS,一般都有下面这几个操作:
1. Debug 模式编译并启动程序
2. 程序运行出错,打断点分析出错的地方
3. 单步运行程序,包括:step over 单步执行;step into 跳入函数;step return 跳出函数
4. 还有全速运行,打印或者监视变量,冻结或解冻线程等调试技术

在 IDE 中上面的这些步骤一般都有固定的按钮提供给我们使用,非常的简单方便,我们只要多练习练习,在图形界面调试程序不会很难,但是在 Linux 下用命令来调试程序就比图形界面要复杂很多了。

其实,你知道真正的调试高手是什么样的吗?就是 Ta 对计算机原理和程序本身的逻辑理解非常深刻在 Ta 的脑海中已经可以模拟程序的运行过程,并且知道可能出错的地方,这样连断点都不用打了,而且 Bug 的命中率也不低,或许这就是真正的大佬吧 :)

我们回到正题,来介绍在 Linux 使用命令行的调试过程。

gdb 的调试步骤

在 Linux 下既然是使用命令行来调试,顾名思义就是手敲命令来调试程序,大体分为下面几个步骤,后面会详细介绍:
1. 编译可以调试的程序
2. 运行程序,打断点
3. 单步调试,监控变量
4. 可视化调试
5. 其他调试技术

可以看出,与 IDE 调试过程差不多,但是实际操作起来可是千差万别,可不是点按钮了,而是自己敲调试程序的命令,就相当于你正在学习那些调试按钮背后的原理,把这种方法学会,不用学就会使用 IDE 来调试程序,不管你信不信,我反正是信了 :)

下面开始正式的调试技术介绍。

15 个 gdb 调试基础命令

下面来正式介绍 gdb 常用的调试技术,都是调试命令,只看不做比较乏味,还是建议你跟我一起动手调试下面的程序,这样才能真正的学会,这是本次要调试的 hello.c 程序,非常简单:

#include <stdio.h>

int add(int x, int y) {
    return x + y;
}

int main() {
    int a = 1;
    int b = 2;
    printf("a = %d\n", a);
    printf("b = %d\n", b);

    int c = add(a, b);
    printf("%d + %d = %d\n", a, b, c);
    return 0;
}

1. 编译可以调试的程序

我们平常使用 gcc 编译的程序如果不加 [-g] 选项:

gcc hello.c -o hello

gdb 会提示该可执行文件没有调试符号,不能调试:

gdb hello
# gdb 提示信息
Reading symbols from a.out...(no debugging symbols found)...done.

如果需要让程序可以调试,就必须在编译的时候加上 [-g] 参数

gcc -g hello.c -o hello

2. 载入要调试的程序

我们在命令行下需要手动载入待调试的程序,有 2 种方法:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值