【Linux】GDB的安装与使用
安装
安装gdb的具体步骤如下:
1、查看当前gdb安装情况
rpm -qa | grep gdb
如果有,则可以先删除:
rpm -e --nodeps 文件名
如果没有,则进行下一步。
2、下载gdb源码包或者直接apt安装。
apt命令安装:
sudo apt install gdb
源码包安装:
在linux中输入:
wget http://ftp.gnu.org/gnu/gdb/gdb-7.10.1.tar.gz
解压:
tar -zxvf gdb-7.10.1.tar.gz
进入gdb目录:
cd gdb-7.10.1
输入命令:
./configure
make
make install
3、查看是否安装成功
gdb -v
使用
编写一段简单的C语言程序
#include <stdio.h>
int main()
{
int i = 0;
for(i = 0;i<10;++i)
{
printf("%d ",i);
}
printf("\n");
return 0;
}
生产debug版本的可执行程序:
gcc test.c -o test_g -g
注意:所有的调试代码操作必须在debug版本下执行
使用下面的命令可以查看调试信息:
readelf -S test_g | grep debug
结果如下:
进入gdb
gdb test_g
显示源代码
list或l :显示源代码,每次显示10行
list或l 函数名:列出某个函数的源代码
打断点,查看断点信息
break或b 行号:在某一行设置断点
break或b 函数名:在某个函数开头设置断点
info b:查看断点信息
运行程序
run或r:运行程序
查看变量信息
print或p 变量:打印变量值
print或p &变量:打印变量地址
逐语句执行
step或s:进入函数调用
逐过程执行
next或n:单条执行(不进入函数调用)
删除断点
delete breakpoints或d:删除所有断点
delete breakpoints或d 1:删除序号为n的断点
调用堆栈
breaktrace或bt:查看各级函数调用及参数
跟踪变量
display 变量名:跟踪查看一个变量,每次停下来都显示它的值
undisplay:取消对先前设置的变量的跟踪
跳转至x行
until X行号:跳至X行
跳转至下一个断点
continue或c:从当前位置开始连续而非单步执行程序
将一个指定函数跑完
finish:执行完成一个函数就停止