【Linux | C++】GDB调试教程详解

1.什么是GDB

        GDB(GNU Debugger)是 GNU 项目提供的调试器,它用于调试 C、C++、Fortran 等编程语言编写的程序。GDB 允许程序员在程序执行过程中观察程序状态,诊断问题,并在代码执行过程中进行控制和修改。它是一个功能强大的工具,可以帮助程序员排查和修复程序中的错误。

        调试 是指在程序开发过程中,用来发现、定位、修复程序中的错误或缺陷的过程。调试不仅仅是找出程序中的 bug,更是一个优化程序和提高代码质量的过程。

调试的主要作用包括:

  1. 发现和修复错误:通过调试,程序员可以发现程序中的逻辑错误、语法错误或运行时错误,并进行修复。
  2. 理解程序行为:调试工具可以帮助程序员了解程序在运行时的内部行为,例如变量的值、函数的调用、程序的执行路径等。
  3. 优化性能:通过分析程序的执行过程,找出性能瓶颈或低效代码,进行优化以提高程序的性能。
  4. 验证程序逻辑:调试可以验证程序是否按照预期的逻辑执行,确保程序的功能和行为符合设计要求。

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(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值