Linux中的C/C++语言调试工具 GDB

这篇具有很好参考价值的文章主要介绍了Linux中的C/C++语言调试工具 GDB。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Linux中的C/C++语言调试工具 GDB

GDB(GNU Debugger)是一个功能强大的调试器,用于调试和分析程序的执行过程。它是GNU项目的一部分,可以在多个操作系统上使用,包括Linux、Unix和Windows。

GDB主要用于调试编译后的可执行文件,它可以帮助程序开发人员识别和修复代码中的错误、追踪程序的执行流程、观察和修改程序的状态,以及分析程序崩溃时的堆栈跟踪信息。

Linux下最常用的调试工具就是GDB。

1.安装GDB

sudo apt-get install gdb

2.使用GDB

2.1启动与退出

启动

$gdb

使用quit命令(简写成q)退出

$(gdb)q

2.2装入调试程序

首先写一个C语言程序

/*a.c*/
#include<stdio.h>
void show(int i){
	printf("this is %d\n",i);
}
int main(){
	int i=0;
	int j=9;
	for(i=1;i<=j;i++)
		show(i);
	return 0;
}

对上面的代码进行编译连接

gcc -g a.c -o a

在调试程序之前必须先得在gdb中装入调试程序,根据装入调试程序的时间分为两种:

  • 在启动gdb时,进行装入:

    $gdb a
    
  • 在启动gdb之后,进行装入:

    (gdb) file a
    

Linux中的C/C++语言调试工具 GDB

2.3列出源代码

程序转入gdb之后,可以使用list命令(可以简写成l)将源码列出。

(gdb) list

Linux中的C/C++语言调试工具 GDB

默认情况下只会显示前10行的代码,如果程序代码量过多,可以继续使用list命令显示后面的代码。

2.4执行程序

执行命令时run(可以简写成r)。可以在run命令之后可以加入执行参数来执行相关的操作。

(gdb) run

Linux中的C/C++语言调试工具 GDB

目前没有添加断点,所以程序直接输出了运行结果。若添加了断点,则会在断点的位置进行停止。

3.设置与管理断点

3.1 设置断点

设置断点的命令是 break(可以简写成b)。一般设置形式:

break 行号

设置完断点以后,利用run命令执行程序。

Linux中的C/C++语言调试工具 GDB

  • 利用break设置断点时,也可以添加条件进行判断

    break 行号 if语句
    

当程序在断点处停下来了,可以使用continue命令(可以简写成c),继续执行程序。

(gdb) continue

Linux中的C/C++语言调试工具 GDB

3.2查看断点信息

加入断点之后,可以利用 info break命令进行查看设置的断点信息。可以看到在断点的编号、类型、地址等信息。

(gdb) info break

Linux中的C/C++语言调试工具 GDB

3.3删除断点信息

利用delete命令(可以简写成d)进行删除之前设置的断点。

delete 断点编号

删除指定范围内的断点也可以使用

delete 起始断点编号-终点断点编号

也可以删除指定行上的断点,利用clear命令进行删除

(gdb) clear 行号

Linux中的C/C++语言调试工具 GDB

3.4设置观察点

观察点也称数据断点,顾名思义就是用来观察某个变量或者表达式的变化,如果有变化,则暂停程序的运行,这在调试程序中时非常常见的。设置观察点的命令为 watch,后面跟变量过着表达式。·

(gdb) watch 变量或表达式

可以利用info watchpoints命令来查看当前设置的所有观察点。

可以使用delete命令来删除指定的观察点。

Linux中的C/C++语言调试工具 GDB

4.显示数据和修改变量值

4.1显示变量或表达式的值

在调试程序的过程中,查看变量或则表达式的值是一个有效的方法。

在GDB中,可以用print命令(可以简写成p)来显示。

(gdb) print 变量或表达式

Linux中的C/C++语言调试工具 GDB

4.2 自动显示变量或表达式的值

若我们需要持续性观察一个变量或表达式的值,可以使用display命令,设置为自动显示。

(gdb) dispaly 变量

Linux中的C/C++语言调试工具 GDB

4.3修改变量的值

在调试程序中,我们可以通过修改某一个变量的值来验证代码的准确性。

set命令

(gdb) set 变量=值

5.执行命令和调用函数

为了方便后面的演示,现在新建一个b.c代码文件。

/*b.c*/
#include<stdio.h>
void show(){
	printf("1+2+3= ");
}
int main(){
	int i=0;
	int sum=0;
	for(i;i<=3;i++)
		sum+=i;
	show();
	printf("%d\n",sum);
	return 0;
}

编译成可执行文件,并载入gdb中,方便后续演示。

$gcc -g b.c -o b
$gdb b

5.1单步执行

单步执行就是一步一步跟踪程序的执行的流程,根据变量的值,找到错误的原因。这是在程序调用中的常见的操作。

GDB中可以使用step(可以简写成s)或next(可以简写成n)来单步执行程序。

step命令可以跟踪进入函数内部;next命令会将函数看作一条语句,不进入函数内部。

Linux中的C/C++语言调试工具 GDBLinux中的C/C++语言调试工具 GDB

5.2退出被调用的函数

当利用step命令进入函数内部时,如果需要忽略剩下的函数语句,并继续向下执行,可以执行return命令跳出函数,

return命令后面可以跟变量或表达式。

6.其他

6.1帮助手册

GDB中设置了帮助手册,不清楚的命令可以利用help来获取帮助。

Linux中的C/C++语言调试工具 GDB

6.2 查看堆栈信息

利用backtrack(可以简写成bt)和frame(可以简写f)命令查看栈的信息。

Linux中的C/C++语言调试工具 GDB

6.3 查看程序的汇编代码

可以利用disassemble命令来显示程序的汇编代码。

void show(){
	printf("1+2+3= ");
}

Linux中的C/C++语言调试工具 GDB文章来源地址https://www.toymoban.com/news/detail-477822.html

到了这里,关于Linux中的C/C++语言调试工具 GDB的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 汇编语言调试工具:DosBox及debug安装配置使用教程

            学习汇编语言时,需要进入dos模式并使用debug工具调试。但是64位win10系统没有自带这些工具。因此,需要额外安装DosBox和debug.exe两个软件。本文介绍如何下载、安装、配置这两个工具软件。  简介 DOSBox 是一个 DOS 模拟程序,由于它采用的是 SDL 库,所以可以很方便的

    2024年02月11日
    浏览(28)
  • RK3568平台开发系列讲解(调试篇)Linux 性能调试工具汇总

    🚀返回专栏总目录 沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将汇总介绍 Linux 调试优化的工具。 我们来看 Linux 的性能工具。首先还是要推荐下面这张图,也就是 Brendan Gregg 整理的性能工具谱图。我在专栏中多次提到过,你肯定也已经参考过。 这张图从

    2023年04月15日
    浏览(52)
  • Linux的调试工具 - gdb(超详细)

    程序的发布方式有两种,debug模式和release模式 Linux gcc/g++出来的二进制程序,默认是release模式 要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项,发布成debug模式 注: 如果没有断点,程序将运行到底 注: 单条执行需要在调试启动的情况下进行,需要先打断点

    2024年02月07日
    浏览(29)
  • 【linux】git和gdb调试工具

    这两个步骤用于识别提交代码的身份,一个你的名字,一个你的邮箱 开启本地仓库 克隆本地仓库成功 我们将这个仓库拷到了111目录底下. 我们发现少了一个.gitignore,因为.gitignore是隐藏文件,所以使用ls -la查看 用于查看提交状态 上面可以看到提交人的信息,以及时间,以及提

    2024年02月22日
    浏览(30)
  • 在linux中的GDB调试一些用法

    -g: 选项的作用是在可执行文件中加入源代码的信息 -Wall:尽量不影响程序行为的情况下选项打开所有warning program:为程序名 help:使用帮助 gdb:启动程序 quit:退出调试 set args num1 num2 …:设置程序中需要的参数(就是cin需要接收的值) show args:展示参数 list或者l :从默认位

    2024年02月05日
    浏览(35)
  • linux下can调试工具canutils编译安装

    命令安装只需要 sudo apt-get install canutils 一、下载源码 下载canutils和libsocketcan libsocketcan地址:https://public.pengutronix.de/software/libsocketcan/libsocketcan-0.0.11.tar.bz2 #0.0.11版本 canutils地址:https://public.pengutronix.de/software/socket-can/canutils/v4.0/canutils-4.0.6.tar.bz2 #4.0.6版本 解压如下: tar -jxvf l

    2024年01月23日
    浏览(28)
  • Linux开发工具之调试器gdb

    程序的发布方式有两种,debug模式和release模式 Linux gcc/g++出来的二进制程序,默认是release模式 要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项   所以一份代码若要被调试必须是debug模式,但是在linux下我们编译代码的时候默认为release模式,要想让我们的代码

    2024年02月07日
    浏览(31)
  • 【Linux操作系统】深入了解系统编程gdb调试工具

    在软件开发过程中,调试是一个非常重要的步骤。无论是在开发新的软件还是维护现有的代码,调试都是解决问题的关键。对于Linux开发者来说,GDB是一个非常有用的调试工具。在本文中,我们将探讨Linux中使用GDB进行调试的方法和技巧。 GDB是GNU调试器的缩写,是一个功能强

    2024年02月14日
    浏览(37)
  • Linux工具【2】(调试器gdb、项目自动化构建工具make/Makefile)

    在上一篇文章中介绍了Linux中的编辑器vim与编译器gcc与g++: 戳我看vim与gcc详解哦 在本篇文章中将继续来介绍Linux中的工具: 调试器gdb与项目自动化构建工具make/Makefile 在Windows环境中,我们使用vs时,常常会逐过程与逐语句地调试代码以更高效地寻找到错误的位置。在Linux中也

    2024年02月12日
    浏览(41)
  • [linux开发工具]小程序--进度条、调试器 - gdb

    📙 作者简介 :RO-BERRY 📗 学习方向:致力于C、C++、数据结构、TCP/IP、数据库等等一系列知识 📒 日后方向 : 偏向于CPP开发以及大数据方向,欢迎各位关注,谢谢各位的支持 第一种情况 执行结果如下: 可以看到程序先执行printf再执行sleep 第二种情况 执行结果如下: 在这里

    2024年02月22日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包