【Linux】调试器-gdb的安装与使用

1. 背景

程序的发布方式有两种,debug模式和release模式
Linux gcc/g++出来的二进制程序,默认是release模式
要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项

GDB的安装

在开始之前,确保已经安装了GDB。如果没有安装,可以使用包管理器进行安装。

安装GNU调试器(GDB)是在Linux系统中进行程序调试的重要步骤。下面是在常见的Linux发行版上安装GDB的简要说明:

Ubuntu/Debian:

在Ubuntu或Debian系统上,可以使用apt包管理器进行安装。打开终端,执行以下命令:

sudo apt update
sudo apt install gdb

这将下载并安装GNU调试器(GDB)及其相关的依赖项。

CentOS/RHEL:

在CentOS或RHEL系统上,可以使用yum包管理器进行安装。打开终端,执行以下命令:

sudo yum install gdb

如果你使用的是RHEL 8或CentOS 8,请使用下面的命令:

sudo dnf install gdb

源码安装:

如果需要使用最新版本的GDB或者系统没有预编译的包,你也可以选择从源代码编译安装。首先,你需要下载GDB的源代码包,然后解压缩。接着,进入解压后的目录,执行以下命令:

./configure
make
sudo make install

验证安装:

安装完成后,可以通过在终端中执行以下命令来验证是否成功安装了GDB:

gdb --version

如果安装成功,会显示GDB的版本信息。

GDB的基本用法

要使用GDB,首先需要在编译时启用调试信息。例如,使用gcc编译C程序时,可以通过添加-g选项来生成调试信息:

gcc -g -o myprogram myprogram.c

接下来,可以通过以下命令启动GDB并加载程序:

gdb ./myprogram

一旦进入GDB,就可以使用各种命令来检查程序状态、执行程序、设置断点等。

2. gdb常用命令

gdb binFile 退出:ctrl + dquit 调试命令:
list/l 行号:显示binFile源代码,接着上次的位置往下列,每次列10行。
list/l 函数名:列出某个函数的源代码。
rrun:运行程序。
n next:单条执行。
sstep:进入函数调用
break(b) 行号:在某一行设置断点
break 函数名:在某个函数开头设置断点
info break :查看断点信息。
finish:执行到当前函数返回,然后挺下来等待命令
print(p):打印表达式的值,通过表达式可以修改变量的值或者调用函数
p 变量:打印变量值。
set var:修改变量的值
continue(或c):从当前位置开始连续而非单步执行程序
run(或r):从开始连续而非单步执行程序
delete breakpoints:删除所有断点
delete breakpoints n:删除序号为n的断点
disable breakpoints:禁用断点
enable breakpoints:启用断点
info(或i) breakpoints:参看当前设置了哪些断点
display 变量名:跟踪查看一个变量,每次停下来都显示它的值
undisplay:取消对先前设置的那些变量的跟踪
until X行号:跳至X行
breaktrace(或bt):查看各级函数调用及参数
infoi) locals:查看当前栈帧局部变量的值
quit:退出gdb

结语

GDB是Linux环境下的一款强大的调试工具,本文介绍了它的基本用法、选项和常用命令。通过深入了解和熟练掌握GDB,开发者可以更轻松地进行程序调试,提高开发效率。

希望本文对您有所帮助,谢谢阅读!

相关推荐

  1. Linux调试器-gdb安装使用

    2024-03-24 14:58:04       17 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-24 14:58:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-24 14:58:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-24 14:58:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-24 14:58:04       20 阅读

热门阅读

  1. dom元素+CSS实现阶梯动画效果

    2024-03-24 14:58:04       17 阅读
  2. Linux安装iptables 防火墙

    2024-03-24 14:58:04       19 阅读
  3. 前端安全之XSS与CSRF

    2024-03-24 14:58:04       14 阅读
  4. Median of an Array(贪心策略,编程技巧)

    2024-03-24 14:58:04       19 阅读
  5. Mysql

    Mysql

    2024-03-24 14:58:04      15 阅读
  6. arm linux应用程序crash分析一般方法

    2024-03-24 14:58:04       17 阅读
  7. Vue2 CSS小知识点

    2024-03-24 14:58:04       18 阅读
  8. 【力扣】268.丢失的数字

    2024-03-24 14:58:04       18 阅读
  9. 防火墙有哪些特点?

    2024-03-24 14:58:04       17 阅读
  10. Web框架开发-Django-数据库表的单表查询

    2024-03-24 14:58:04       19 阅读
  11. new world of dream

    2024-03-24 14:58:04       17 阅读