0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

linux编程GDB调试功能

汽车玩家 来源:Hu先生Linux后台开发 作者:Hu先生Linux后台开发 2020-05-05 23:49 次阅读

GDB是一套字符界面的程序集,可以用它在linux上调试C和C++程序,它提供了以下的功能:

1 在程序中设置断点,当程序运行到断点处暂停

2 显示变量的值,可以打印或者监视某个变量,将某个变量的值显示出来

3 单步执行

4 运行时修改变量的值

5 跟踪路径

6 线程切换

等等

下面以以下程序为例

linux编程GDB调试功能

linux编程GDB调试功能

当我们要使用GDB进行程序的调试时,在用GCC编译时需要加上-g,如下:

GDB之所以能够进行程序的调试也是在于进行编译时的-g选项,当设置了这个选项的时候,GCC会向程序中塞入一下信息,作为GDB调试时的铺垫

,然后GDB才能够利用这些铺垫和信息与程序交互。

有两种方式可以进入GDB,一种就是直接在命令行上输入gdb,然后再在gdb中用file命令加载要调试的程序:

linux编程GDB调试功能

另一种就是,直接在命令行上使用:gdb 程序名

linux编程GDB调试功能

这两种方法都是要在GDB中加载已经做了铺垫的将被调试的程序。

进行GDB并且加载了程序后,我们就可以进行一系列的调试操作了:

1 用 "set args 参数值1 参数值2...."来设置输入参数

2用“list 开始的行号"来打印内容

linux编程GDB调试功能

list 还可以选取区间来打印代码:

linux编程GDB调试功能

3.用 ”b 位置"设置断点

4.用 “run 参数”来运行程序

linux编程GDB调试功能

5.用"display 变量名“来显示变量

6.用”c"来继续运行程序

linux编程GDB调试功能

7.用set命令来改变变量的值

8用q命令来退出GDB

linux编程GDB调试功能

9 用p命令来打印变量的值

10 设置条件断点

11 用delete删除断点

linux编程GDB调试功能

12 用info break 来显示断点信息

linux编程GDB调试功能

13.用bt来显示函数调用路径

linux编程GDB调试功能

14用whatis或者ptype来显示变量的类型

linux编程GDB调试功能

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11342

    浏览量

    210327
  • gdb
    gdb
    +关注

    关注

    0

    文章

    60

    浏览量

    13335
收藏 人收藏

    评论

    相关推荐

    嵌入式工程师都在找的【Linux内核调试技术】建议收藏!

    处理器寄存器和全局数据结构等调试信息,而无需频繁编译和启动Linux内核。这使得Kprobes成为了一种高效且灵活的内核调试工具。 KGDB KGDB提供了一种使用GDB
    发表于 11-28 15:37

    Linux应用编程的基本概念

    Linux应用编程涉及到在Linux环境下开发和运行应用程序的一系列概念。以下是一些涵盖Linux应用编程的基本概念。
    的头像 发表于 10-24 17:19 290次阅读

    PLC远程编程调试平台是什么

    在快速发展的工业自动化领域,可编程逻辑控制器(PLC)作为核心控制设备,其稳定运行对于生产效率和安全性至关重要。然而,随着生产规模的不断扩大和远程管理的需求增加,传统的现场编程调试模式已难以满足高效
    的头像 发表于 10-08 14:26 277次阅读
    PLC远程<b class='flag-5'>编程</b><b class='flag-5'>调试</b>平台是什么

    扫描模块的编程示例和调试策略

    电子发烧友网站提供《扫描模块的编程示例和调试策略.pdf》资料免费下载
    发表于 09-27 09:38 0次下载
    扫描模块的<b class='flag-5'>编程</b>示例和<b class='flag-5'>调试</b>策略

    ESP32-C3使用命令行GDB调试出现报错的原因?

    (); while (1) {led_blink();vTaskDelay(1000 / portTICK_PERIOD_MS);}} 通过 idf.py 设置型号/编译/烧录/复位/调试 每次
    发表于 08-01 07:47

    PLC远程编程调试和远程上下载程序平台有什么功能

    ,进而影响整个工厂的生产节奏,因此就需要对PLC进行合理的调试维护工作,以确保安全稳定运行。 传统的PLC编程调试方法通常需要工程师亲临现场进行操作,这不仅耗费大量时间和人力成本,还可能因环境复杂、交通不便、工作状态等因素导致工
    的头像 发表于 07-22 17:24 237次阅读

    RISC-V 汇编语言程序的调试

    ,通过jr t0跳入。 模拟器执行与调试 下面通过编译为32位的代码来看一下程序的执行过程(由于程序不需要任何操作系统的支持,会容易跑偏,所以要用远程gdb进行单条指令执行,观察寄存器的执行情况
    发表于 07-19 16:27

    ESP8266是否可以通过JTAG或SWD成功地使用J-Link进行编程调试

    是否有可能,如果是的话,是否有人通过JTAG或SWD成功地使用J-Link进行编程调试ESP8266? 我正在使用 Sparkfun Thing 板 (https
    发表于 07-08 08:19

    是否有可能在支持gdb的第三方集成开发环境中使用DAS配置调试

    是否有可能在支持 gdb 的第三方集成开发环境中使用 DAS 配置调试
    发表于 07-02 07:29

    PLC远程调试模块是什么?PLC远程调试模块的功能

    PLC(可编程逻辑控制器)远程调试模块是一种设备或软件功能,它允许工程师或技术人员在远离实际现场的情况下,通过网络对PLC进行编程、监控、故障诊断和参数调整。这对于分布广泛或难以直接接
    的头像 发表于 05-22 14:53 838次阅读
    PLC远程<b class='flag-5'>调试</b>模块是什么?PLC远程<b class='flag-5'>调试</b>模块的<b class='flag-5'>功能</b>

    使用GDB OpenOCD调试程序进行调试时,DAP \"CYW20820A1.cpu初始化失败的原因?

    我使用 Modus 工具箱导入了一个 AUDIO WATCH 示例。 成功构建后,当我尝试使用 GDB OpenOCD 调试程序进行调试时,得到如下错误信息: 所有跳线设置均为默认值。 信息:自动
    发表于 05-21 07:30

    使用VSCode调试嵌入式程序:如何切换gdb server

    上文小编给大家介绍了一下如何使用VSCode结合cortex-debug插件进行调试的方法。本篇就趁热打铁,进一步深入了解一下如何切换gdb server。让我们可以不仅仅使用JLinkGDBServer进行调试
    的头像 发表于 05-09 11:02 2442次阅读
    使用VSCode<b class='flag-5'>调试</b>嵌入式程序:如何切换<b class='flag-5'>gdb</b> server

    嵌入式Linux C语言编程程序调试与宏定义

    Linux使用gcc编译程序的时候,对于调试的语句还具有一些特殊的语法。gcc编译的过程中,会生成一些宏,可以使用这些宏分别打印当前源文件的信息,主要内容是当前的文件、当前运行的函数和当前的程序行。
    发表于 03-01 11:41 1112次阅读

    为什么VSCODE使用GDB调试不显示寄存器?

    VSCODE使用GDB调试不显示寄存器
    发表于 02-22 06:46

    [广东龙芯2K1000/2K500开发板]如何利用coredump 进行调试

    如何利用coredump 进行调试 编译时加入调试信息((PC 机上)) 编译参数为 -g ​loongarch64-linux-gnu-gcc -g 1.c 开启core文件 (开发板上
    发表于 02-20 13:05