gdb调试器快速上手教程

下面是GDB使用的一个实例,希望读者对gdb有一个好的认识,本文介绍的指令都是最基本和最常用的指令,动手操作一下,可以更好更快的掌握gdb的使用方法哦。

首先,有一下程序段:

#include <stdio.h>

int add(int m)
{
	int i,n=0;
	for(i=0;i<=m;i++)
			n+=i;
	printf("sum = %d\t\t",n);
}

int main()
{
	int i,n=0;
	add(50);
	for(i=0;i<=50;i++)
			n+=i;
	printf("main sum = %d\n",n);
}
---------注意使用GCC编译时加上”-g“选项。

**1、进入gdb:

输入gdb和要调试的可执行文件名,出现了gdb相关信息,接下来就进入了”(gdb)”开头的命令行界面,效果如下**

coco@ubuntu:~/gdbtest$ gdb 1test

GNU gdb (Ubuntu 12.0.90-0ubuntu1) 12.0.90
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from 1test...

2、查看文件:

在gdb窗口中输入”L“的小写字母”l“(list)即可查看载入的文件。

查看载入的文件

3、设置断点:

在gdb中设置断点很简单,在“b”后面加入对应的行号就可以了(最常用),如下:
添加一个断点
上图在第六行添加了一个断点,可以用此方法添加多个断点。
(注意:设置断点是指代码运行到对应的行之前暂停,并没有运行到断点的行)

4、查看断点情况:

设置完断点后,可以使用“info b”来查看断点设置情况,如下:
在这里插入图片描述
上图中可以看出设置了一个断点。

5、运行代码:

GDB默认从首行开始运行代码,键入“r”(run)即可,在r后面加上行号可以使程序从指定行开始运行。
在这里插入图片描述
可以看出,从第4行运行到断点处就暂停了。

6、查看变量值:

在程序停止后,可以查看断点处相关的变量值:在gdb中输入“p 变量名”即可。

在这里插入图片描述
i为什么是这样的数值?***读者自己思考一下哈哈。(ps:联系一下上文说到断点的运行结果就会明白了哈)

7、观察变量:

gdb的命令行输入“watch 变量名”来查看变量值变化情况。

在这里插入图片描述

8、单步运行:

输入“n”(next)即可,一次只运行一条语句,方便我们查看程序运行结果。
在这里插入图片描述
9、程序继续运行
命令“c”(continue)可以使程序继续往下运行,知道再次遇到断点或者程序结束。

在这里插入图片描述

10、退出GDB
直接输入“q”(quit)即可。
在这里插入图片描述
以上就是gdb调试最常用并且是最基本的调试方法,跟着教程过一遍就算学会使用gdb来做最基本调试了。


**附:
*上文说的变量值问题:原因就是程序在断点对应的行之前停的,这个时候代码并没有把变量i的值赋为0,而是一个随机数值。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值