GDB调试简介与调试配置

一、GDB简介

GDB,全称为GNU Debugger,是GNU项目提供的一款命令行调试工具,主要用于调试C、C++ 等语言编写的程序。在Linux开发中,GDB是非常常用的调试工具,尤其适合分析程序运行过程中的崩溃、段错误、逻辑错误以及变量变化情况。

正常情况下,我们运行一个程序时,只能看到程序最终的执行结果。如果程序中出现错误,例如数组越界、空指针访问、死循环等问题,单靠输出信息往往很难快速定位问题所在。而使用GDB后,可以让程序按照调试者的控制逐步执行,并在执行过程中观察程序内部状态。

在后面的教程与学习当中,主要讲解GDB的各类基本功能包括:

1、断点管理

2、查看与修改变量

3、内存查看与修改

4、寄存器查看与修改

5、源代码查看与管理

6、函数调用栈管理

7、多线程调试

8、core dump文件调试

9、发行版程序调试

每个小节中都会列出示例程序,并逐步进行调试讲解

二、开发调试环境准备

因为这系列教程主要是在kubuntu24.04的环境下进行,所以需要先在Linux环境下配置好开发调试环境,主要用到gccg++gdb等软件。安装命令如下

shell 复制代码
sudo apt install gcc g++ make gdb

三、GDB调试编译选项

在使用GDB调试程序之前,通常需要在编译程序时添加调试符号。调试符号中保存了源代码和可执行程序之间的对应关系,例如变量名、函数名、源文件名、代码行号等信息。

如果没有调试符号,程序仍然可以被GDB启动,但是调试体验会非常差。可能只能看到汇编指令、内存地址和部分函数地址,而无法准确显示源代码行号,也无法方便地查看变量名。

例如,下面是一个普通的编译命令:

shell 复制代码
gcc main.c -o main

这种方式生成的可执行程序通常不包含完整的调试信息。为了让GDB能够更好地调试程序,需要加上-g选项:

shell 复制代码
gcc -g main.c -o main

在实际开发中,为了让调试结果更容易理解,通常还会关闭编译优化。例如:

shell 复制代码
gcc -g -O0 main.c -o main

其中,-O0表示关闭优化。因为开启优化后,编译器可能会调整代码执行顺序、内联函数、删除未使用变量等,这会导致GDB中看到的执行过程和源代码不完全一致。因此,在学习和调试阶段,常用的编译方式是:

shell 复制代码
gcc -g -O0 main.c -o main

讲解了GDB的简介与前置编译选项之后,就可以启动gdb对编译完成的可执行程序进行调试了。

相关推荐
ttkwzyttk13 天前
GDB TUI窗口管理
gdb
ttkwzyttk13 天前
GDB观察点与捕获点使用
gdb
ttkwzyttk19 天前
GDB函数调用栈管理
gdb
ttkwzyttk20 天前
GDB调试变量、内存与寄存器查看与修改
gdb
modelmd1 个月前
GDB 摘要
gdb
源分享1 个月前
GDB下载和安装保姆级教程
gdb
modelmd2 个月前
翻译 GDB 官方文档
gdb
kidwjb2 个月前
一次多进程信号量同步失效的排查实录
gdb·进程通信·信号量
炘爚2 个月前
C++11实现线程池:项目实现过程的报错与gdb调试
stl·gdb·shared_ptr