1.什么是GDB
GDB(GNU Debugger)是 GNU 项目提供的调试器,它用于调试 C、C++、Fortran 等编程语言编写的程序。GDB 允许程序员在程序执行过程中观察程序状态,诊断问题,并在代码执行过程中进行控制和修改。它是一个功能强大的工具,可以帮助程序员排查和修复程序中的错误。
调试 是指在程序开发过程中,用来发现、定位、修复程序中的错误或缺陷的过程。调试不仅仅是找出程序中的 bug,更是一个优化程序和提高代码质量的过程。
调试的主要作用包括:
- 发现和修复错误:通过调试,程序员可以发现程序中的逻辑错误、语法错误或运行时错误,并进行修复。
- 理解程序行为:调试工具可以帮助程序员了解程序在运行时的内部行为,例如变量的值、函数的调用、程序的执行路径等。
- 优化性能:通过分析程序的执行过程,找出性能瓶颈或低效代码,进行优化以提高程序的性能。
- 验证程序逻辑:调试可以验证程序是否按照预期的逻辑执行,确保程序的功能和行为符合设计要求。
2.GDB的安装教程
在 Ubuntu 上安装 GDB:
1.更新软件包列表:
sudo apt update
2.安装 GDB:
sudo apt install gdb
3.验证安装:
gdb --version
在centos上使用:
sudo yum install gdb
3.GDB在那个开发版本(debug / release)中进行应用呢?
什么是 Debug 版本和 Release 版本?
在软件开发过程中,程序通常会有两个主要版本:Debug 版本和Release 版本。这两个版本在编译和构建时的设置不同,主要用于不同的目的。
Debug 版本
Debug 版本是为调试程序而构建的版本。它包含了额外的调试信息,可以帮助程序员在程序执行时观察和分析程序的内部状态。Debug 版本通常具有以下特点:
- 调试信息:编译时会生成调试信息(如变量名、行号等),以帮助调试工具(如 GDB)进行源代码级别的调试。
- 优化关闭:通常会关闭编译优化,以便程序员可以准确地跟踪代码的执行流程和变量的变化。
- 性能:由于缺少优化和额外的调试信息,Debug 版本通常运行较慢,性能较差。
- 编译选项:通常在编译时使用
-g
选项来生成调试信息。例如,在使用g++
编译时:
g++ -g -o myprogram myprogram.cpp
Release 版本
Release 版本是为最终用户发布的程序版本,优化了性能和运行效率。它的特点包括:
- 优化开启:编译时启用优化选项,以提高程序的执行效率。例如,使用
-O2
或-O3
选项进行优化:g++ -O2 -o myprogram myprogram.cpp
- 调试信息去除:通常不包含调试信息,因此难以用调试工具进行源代码级别的调试。
- 性能:由于启用了编译优化,Release 版本的程序运行速度较快,性能较好。
GDB(GNU Debugger)是一种调试工具,主要用于调试包含调试信息的程序。它通常在 Debug 版本上使用,但也可以在 Release 版本上进行一定程度的调试。
4.使用GDB调试代码----常用指令的使用
调试命令集汇总:
注:()括号里面是该指令的全称
- 💜 l(list) 行号/函数名 —— 显示对应的code,每次10行
- 💜r(run) —— F5【无断点直接运行、有断点从第一个断点处开始运行】
- 💜b(breakpoint) + 行号 —— 在那一行打断点
- 💜b 源文件:函数名 —— 在该函数的第一行打上断点
- 💜b 源文件:行号 —— 在该源文件中的这行加上一个断点吧
- 💜info b —— 查看断点的信息
- breakpoint already hit 1 time【此断点被命中一次】
- 💜d(