[Linux] Linux代码调试器 -- gdb

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

[Linux] Linux代码调试器 -- gdb,Linux,linux,运维

1、背景

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

2、使用gdb

2.1 生成debug版本

我们先来写一段C语言代码:

#include <stdio.h>

int main()
{
    int i = 0;
    for(i = 0; i < 5; i++)
	{
    	printf("hello linux!\n");
    }                                                                                                                                   
    return 0;
}

[Linux] Linux代码调试器 -- gdb,Linux,linux,运维

这里我们正常再编写一个Makefile文件,用于自动化构建,我们要还是正常的编写生成的可执行文件就是release版本,但是在gcc编译代码的时候加上 -g 选项,这样生成的就是debug版本的可执行程序了。
[Linux] Linux代码调试器 -- gdb,Linux,linux,运维
[Linux] Linux代码调试器 -- gdb,Linux,linux,运维
此时我们生成的就是debug版本的可执行文件。

2.2 进入gdb

gdb test_debug //gdb 可执行程序名

[Linux] Linux代码调试器 -- gdb,Linux,linux,运维

2.3 显示源代码

list / l 行号:显示 binFile 源代码,接着上次的位置往下列,每次列 10 行。 list / l
函数名:列出某个函数的源代码。

list n // 将第n行放在输出的十行中间输出出来
list 函数名 // 从函数名开始打印10行出来

这里 list 可以简写为 l 使用。
[Linux] Linux代码调试器 -- gdb,Linux,linux,运维

2.4 运行程序/开始调试

r或run:运行程序。

[Linux] Linux代码调试器 -- gdb,Linux,linux,运维

如果存在断点,就会跳转到断点行,这就是调试。

[Linux] Linux代码调试器 -- gdb,Linux,linux,运维

2.5 打断点,查看断点信息

break(b) 行号:在某一行设置断点
break 函数名:在某个函数开头设置断点

b 行号 // 在某一行打断点

[Linux] Linux代码调试器 -- gdb,Linux,linux,运维

info break :查看断点信息

[Linux] Linux代码调试器 -- gdb,Linux,linux,运维

2.6 删除断点

delete breakpoints:删除所有断点
delete breakpoints n:删除序号为n的断点

d // delete简写,直接d是删除所有断点

[Linux] Linux代码调试器 -- gdb,Linux,linux,运维

d Num // 删除编号为Num的断点

[Linux] Linux代码调试器 -- gdb,Linux,linux,运维

这里我们可以发现,在一次调试的周期中,断点被创建出来再被删除,然后再去创建断点,断点序号是线性递增的的,不是删掉后重新按连续的升序去排。

2.7 断电的禁用、启用

disable breakpoints:禁用断点

[Linux] Linux代码调试器 -- gdb,Linux,linux,运维

enable breakpoints:启用断点

[Linux] Linux代码调试器 -- gdb,Linux,linux,运维

2.8 逐语句执行

s或step:进入函数调用

[Linux] Linux代码调试器 -- gdb,Linux,linux,运维

2.9 逐过程执行

n 或 next:单条执行(不进入函数调用)

[Linux] Linux代码调试器 -- gdb,Linux,linux,运维

2.10 跟踪变量

display 变量名:跟踪查看一个变量,每次停下来都显示它的值

[Linux] Linux代码调试器 -- gdb,Linux,linux,运维

undisplay:取消对先前设置的所有变量的跟踪

undisplay n:取消对先前设置的编号为n的变量的跟踪

[Linux] Linux代码调试器 -- gdb,Linux,linux,运维
[Linux] Linux代码调试器 -- gdb,Linux,linux,运维

2.11 跳转到X行

until X行号:跳至X行

[Linux] Linux代码调试器 -- gdb,Linux,linux,运维

2.12 跳转到下一个断点

continue(或c):从当前位置开始连续而非单步执行程序

[Linux] Linux代码调试器 -- gdb,Linux,linux,运维

2.13 运行完整个指定函数

finish:执行到当前函数返回,然后挺下来等待命令

2.14 查看调用堆栈

breaktrace(或bt):查看各级函数调用及参数

当我们主函数中调用了其他函数,我们使用bt命令就能看到所调用的堆栈:
我们这次又写了一个func函数,并且进入到func函数中,查看调用的堆栈,然后再跑完func函数,再次查看调回用的堆栈,bt命令可以完整的看到堆栈调用的情况。
[Linux] Linux代码调试器 -- gdb,Linux,linux,运维

2.15 设置变量的值

set var 变量名 = val // 将某变量的值设置为val

用处:在处理判断逻辑出问题的时候使用。文章来源地址https://www.toymoban.com/news/detail-742596.html

到了这里,关于[Linux] Linux代码调试器 -- gdb的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Linux调试器之gdb

    我们前面介绍了几个基本的环境开发工具。例如通过yum我们可以安装和卸载软件、通过vim我们可以写代码、通过gcc和g++我们可以编译代码成可执行程序。但是如何在Linux下调试代码呢?我们并未介绍,本期我们将来介绍最后一个工具 --- 调试器gdb。 程序的发布方式 gdb基本的调

    2024年04月16日
    浏览(52)
  • Linux - 还不懂 gdb 调试器?(调试软件)

    当前,我们可以使用 make/makefile 来程序化执行代码文件;可以使用 gcc/g++ 等编译器来编译代码;可以使用 vim 编辑器来编写代码;其实在 Linux 当中还有一个工具,可以实现调试工作,这个工具就是 -- gdb。 在了解调试器之前,你应该对代码的发布版本做一些了解: 我们在 VS

    2024年02月07日
    浏览(40)
  • 【Linux】gdb调试器的使用

    文章目录 一、gdb简介 二、调试前的准备 1、生成调试文件 2、启动 gdb  三、gdb 使用方法  1、查看源代码 2、设置 / 查看断点(多种方式设置断点) 方法一 方法二 方法三 3、run  4、删除断点、断点无效 5、逐过程调试(以函数为单位) 6、逐语句调试 7、查看调用链 8、查看变

    2024年02月02日
    浏览(38)
  • 【Linux】——调试器-gdb的使用

    序言: 本期,我将带领大家学习的关于linux下的 调试器gdb 的使用,废话不多说跟着我一起去看看吧!! 目录 前言 (一)背景介绍 1、debug模式和release模式 2、为什么Release不能调试但DeBug可以调试 3、初步见识 1️⃣readelf (二)调试代码 1、命名大全 2、具体演示 0️⃣行号显

    2024年02月07日
    浏览(29)
  • 【Linux】Linux下调试器gdb的使用

    👑作者主页:@安 度 因 🏠学习社区:StackFrame 📖专栏链接:Linux 如果无聊的话,就来逛逛 我的博客栈

    2024年02月19日
    浏览(32)
  • 【Linux】调试器:gdb 的基本使用

    gdb 全称 GNU symbolic debugger,是 Linux 下常用的程序调试器。 调试器的核心工作,主要是为了定位问题。废话不多说。 gdb 的安装 另外: gcc、g++ 默认形成的版本是 release,不是 debug 版本!所以想要在 Linux 下调试程序,需要在 Makefile 文件 中,添加 -g 选项 指定以 dubug 方式编译程

    2024年02月16日
    浏览(30)
  • Linux | 调试器GDB的详细教程【纯命令行调试】

    学习了【vim】知道了如何 编辑 一个代码文本 学习了【gcc】知道了如何 编译 一个代码文本 学习了【make/Makefile】知道了如何 自动化构建 一个代码文本 但是如何对一段代码去进行调试呢,此时就要使用到 Linux下的调试器gdb 了。对于这个调试器来说,不像是VS中那样的图形化界

    2024年02月02日
    浏览(38)
  • Linux开发工具之调试器gdb

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

    2024年02月07日
    浏览(31)
  • Linux:gdb调试器的解析+使用(超详细版)

    程序的发布方式有两种,debug模式和release模式 debug模式:可以被调试; release模式:不可以被调试。 为什么需要debuy和release这两个模式呢? 答:程序员在开发的时候需要去调试代码,所以需要debuy模式,而用户一般不懂这些代码的调试不需要debuy模式,只需要快速的下载和安

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

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

    2024年02月22日
    浏览(33)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包