centos上gdb的安装及使用

centos上gdb的安装及使用

  • 1.gdb的安装
      • 在root用户下安装gdb
      • 在普通用户下安装gdb
      • 给普通用户进行提权
  • 2.gdb的使用

GDB是GNU调试器,它是一个用于调试程序的工具。它可以帮助我们查看程序在运行时发生了什么,并且可以帮助我们找到错误并修复它们。普通用户可以使用root用户下载的gdb。但是,普通用户可能无法访问某些受保护的内存或硬件资源。

1.gdb的安装

可以使用yum命令,安装完成后,可以使用gdb命令来启动GDB。

在root用户下安装gdb

yum install -y gdb

yum install -y gdb 是一个 Linux 命令,用于安装名为gdb 的软件包。yum 是一个包管理器,它用于安装、更新和删除软件包。install 选项告诉 yum 要安装一个软件包-y 选项表示自动回答所有提示为“是”,这样安装过程中就不会出现交互式提示。gdb 是 GNU 调试器的缩写,它是一个用于调试程序的工具。

在普通用户下安装gdb

sudo yum install -y gdb

sudo是“superuser do”的缩写。它是一个命令,允许普通用户以超级用户(也称为root用户)的身份执行特定的命令。超级用户具有对系统的完全控制权,可以执行许多普通用户无法执行的操作。
当使用sudo命令时,系统会提示输入密码。这是为了确保只有经过授权的用户才能以超级用户身份执行命令。一旦输入了正确的密码,就可以以超级用户身份执行指定的命令。
但是这是会出现这种错误:
在这里插入图片描述
这是因为xk用户没有权限,也是xk不在这个sudoers file文件里。需要给xk用户进行提权。

给普通用户进行提权

请注意,不要使用普通文本编辑器编辑此文件! 始终使用 visudo 命令代替!这个命令在保存文件时,会检查文件是否有语法错误。 如果有任何错误,这个文件不会被保存。因为 /etc/sudoers 文件中不正确的语法会使您的系统损坏,无法获得提升的权限,所以使用该 visudo 命令来编辑文件很重要。要编辑 /etc/sudoers 文件,使用 visudo 命令。如果你使用一个文本编辑器打开这个文件,一个语法错误,可能导致用户无法使用 sudo。
要编辑sudoers文件,需要以root用户身份登录,然后使用visudo命令:

sudo visudo

这将打开一个文本编辑器,允许编辑sudoers文件。
进去后就别动鼠标了,因为动鼠标也没用。h:光标左移;j:光标下移;k:光标上移;l:光标右移。
进去后按j键,在文件中,可以找到一个类似于以下内容的行(大概100行):

  root ALL=(ALL) ALL

如:在这里插入图片描述

这一行表示root用户可以在任何主机上以任何用户身份执行任何命令。要给普通用户root权限,可以在该行下面添加一行类似于以下内容的内容:

username ALL=(ALL) ALL

其中username是要给予root权限的用户的用户名。添加此行后,保存并关闭文件。
按i(进行修改)就可以进行添加,添加完成后,按Shift+:进入底行模式(此时光标在最下方),输入wq(w:表示写入,q:表示退出)。
最后输入:gdb --version 查看安装的版本。

2.gdb的使用

要使用GDB,首先需要编译的程序并生成调试信息。这可以通过在编译命令中添加-g选项来实现。例如,如果使用gcc编译器,可以使用以下命令来编译的程序并生成调试信息:

gcc -g myprogram.c -o myprogram

接下来,可以使用gdb命令启动GDB并加载的程序:

gdb myprogram

list/l 行号:显示binFile源代码,接着上次的位置往下列,每次列10行。
centos上gdb的安装及使用_第1张图片

list/l 函数名:列出某个函数的源代码。
r或run:运行程序。
break(b) 行号:在某一行设置断点
break 函数名:在某个函数开头设置断点
info break :查看断点信息。
n 或 next:单条执行。(也叫作逐过程)程序运行才能使用,也就是打断点,然后r后才能使用。
s或step:进入函数调用(也叫作逐语句)同上。
finish:执行到当前函数返回,然后挺下来等待命令
print§:打印表达式的值,通过表达式可以修改变量的值或者调用函数
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):查看各级函数调用及参数
info(i) locals:查看当前栈帧局部变量的值
quit:退出gdb
以上为gdb调试器常用的命令。

你可能感兴趣的:(linux)