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

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

3天内不再提示

如何使用GDB调试工具

麦辣鸡腿堡 来源:CSDN博客 作者:失了志的咸鱼 2023-11-09 17:17 次阅读

2.1 启动调试

在程序开始调试之前,要确保程序在gcc、g++编译时,有如下-g的添加调试信息的选项

gcc -g test.c -o test

1、启动未运行的程序

启动未运行的程序,只需要在对应程序目录中使用下面的命令

gdb test

2、调试已经开始运行的程序进程

调试已经开始运行的程序进程,首先先用top命令查看运行的程序进程的pid如下:

图片

比如我要加载的程序qemu-system-x86的pid为269427,则用下面的命令将进程附加到GDB调试

gdb attach 269427#gdb attach [进程号]

或者先打开gdb,在gdb中输入attach 269427也可以。效果如下

图片

此时程序是处于暂停状态的,用下面的命令让程序继续运行

#前面是缩写,#后是全写,两者皆可
(gdb) c#continue

效果如下:

图片

2.2 断点管理

添加断点

•方法一

#源程序只有一个文件
b [行号]#break [行号]

•方法二

#源程序多个个文件
b [文件名.c]:[行号]#break [文件名.c]:[行号]

添加断点后如下所示:

图片

查看所有断点

info b#info break

效果如下:

图片

我们可以看到所有的断点还有断点的编号

删除断点

delete#删除所有断点
delete [断点编号]#删除指定断点

2.3 中断调试执行

s#step 单步执行,进入函数调用
n#next 逐行执行当前线程的代码,不进入函数调用
c#continue 执行代码到下一个断点
f#finish 执行完当前函数并跳出
ignore [断点号] [次数]#设置或修改运行时断点的忽略计数

2.4 运行参数监控

p [变量名]#print [变量名] 输出该变量的值
display [变量名]#调试运行的每一步自动输出该变量的值
bt#显示当前的函数调用堆栈情况
list [行数]#显示当前执行的代码,默认10行
watch [变量名]#设置变量监视点,在变量值改变时暂停程序。


info breakpoints#显示当前已设置的断点列表。
info watchpoints#显示当前已设置的监视点(观察点)列表。
info functions#显示程序中定义的所有函数列表。
info variables#显示程序中定义的所有全局变量和静态变量列表。
info locals#显示当前函数的局部变量信息。
info args#显示当前函数的参数信息。
info threads#显示当前正在运行的所有线程信息。
info registers#显示当前线程的寄存器值。
info frame#显示当前的调用帧信息。
info sharedlibrary#显示加载的共享库信息。
info inferior#显示当前程序的执行状态信息。
info record#显示反复执行的命令数量。
info breakpoints location < address >#显示指定地址上设置的断点信息。
info break

2.5 多线程调试

info thread#命令查看当前线程的信息
info threads#命令查看当前所有线程
frame [栈帧号] #命令切换到指定的栈帧
thread [线程号]#切换到指定线程
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 程序
    +关注

    关注

    114

    文章

    3631

    浏览量

    79543
  • 调试工具
    +关注

    关注

    1

    文章

    42

    浏览量

    12557
  • gdb
    gdb
    +关注

    关注

    0

    文章

    60

    浏览量

    13160
收藏 人收藏

    评论

    相关推荐

    请问如何建立开发环境

    如版主所写,Linux的开发环境建立(1)编译器arm-linux-gcc-3.4.1(2)Jflash-s3c2410:S3C2410芯片的JTAG工具(3)安装gdb调试工具在装载这些工具
    发表于 05-20 05:45

    VIM编辑器怎么实现对嵌入式软件的调试功能?

    GNU免费提供了一整套工具链,为嵌入式Linux程序的开发和调试提供了完整的支持。其强大的gdb调试工具可以方便地对嵌入式平台上的程序进行跟踪调试
    发表于 08-30 07:18

    VIM中怎么实现嵌入式软件调试

    GNU免费提供了一整套工具链,为嵌入式Linux程序的开发和调试提供了完整的支持。其强大的gdb调试工具可以方便地对嵌入式平台上的程序进行跟踪调试
    发表于 03-06 07:50

    如何搭建嵌入式Linux的GDB调试环境

    linux 领域我们最常用的就是GDB 调试工具,通过GDB调试嵌入式C 程序。本章我们首先学习如何搭建嵌入式Linux的GDB
    发表于 11-05 06:03

    基于Windows的ARM GCC开发环 境

    本文以 N32G430 系列 MCU 为例,介绍了在 Windows 环境下基于 vscode 编辑器、GCC 编译工具链和 GDB 调试工具进行搭建开发环境,进行代码编译、固件下载和代码调试
    发表于 11-02 06:27

    N32G031系列GCC开发环境应用笔记分享

    本文以 N32N031 系列 MCU 为例,介绍了在 Windows 环境下基于 vscode 编辑器、GCC 编译工具链和 GDB 调试工具进行搭建开发环境,进行代码编译、固件下载和代码调试
    发表于 11-02 07:20

    嵌入式Linux和嵌入式Linux开发环境

    嵌入式Linux开发 图1是一个典型的嵌入式Linux开发环境它包括主机工作站或者PC 支持GDB调试工具BDI2000 目标板和网络.除了硬件环境外还需要软件开发环境有两
    发表于 09-10 10:22 117次下载
    嵌入式Linux和嵌入式Linux开发环境

    gdb调试工具指南 (很详细的说明)

    gdb调试工具指南,很详细的说明。
    发表于 03-28 09:52 45次下载

    如何在VIM中对嵌入式软件进行调试

    GNU免费提供了一整套工具链,为嵌入式Linux程序的开发和调试提供了完整的支持。其强大的gdb调试工具可以方便地对嵌入式平台上的程序进行跟踪调试
    发表于 06-30 10:39 1048次阅读
    如何在VIM中对嵌入式软件进行<b class='flag-5'>调试</b>

    初学GDB调试工具需要注意的事项

    GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。相比于VS里面的图形化调试工具,其功能更加强大。
    发表于 05-16 17:45 973次阅读
    初学<b class='flag-5'>GDB</b><b class='flag-5'>调试工具</b>需要注意的事项

    STM32CubeIDE乃ST官方提供的免费且功能强大的集成开发工具

    STM32CubeIDE乃ST官方提供的免费且功能强大的集成开发工具,令STM32Cube生态系统更为丰富强劲。它基于Eclipse/CDT框架、GCC编译工具链和GDB调试工具,并支
    的头像 发表于 03-31 15:26 5272次阅读
    STM32CubeIDE乃ST官方提供的免费且功能强大的集成开发<b class='flag-5'>工具</b>

    Linux嵌入式 gdb VSCode图形化调试教程

    linux 领域我们最常用的就是GDB 调试工具,通过GDB调试嵌入式C 程序。本章我们首先学习如何搭建嵌入式Linux的GDB
    发表于 11-02 12:21 15次下载
    Linux嵌入式 <b class='flag-5'>gdb</b> VSCode图形化<b class='flag-5'>调试</b>教程

    riscv-binutils-gdb RISC-V版gdb调试工具

    riscv-binutils-gdb.zip
    发表于 04-25 10:23 0次下载
    riscv-binutils-<b class='flag-5'>gdb</b> RISC-V版<b class='flag-5'>gdb</b><b class='flag-5'>调试工具</b>

    嵌入式Linux GDB是什么

    GDB 调试工具,通过 GDB调试嵌入式 C 程序。 GDB 简介 gdb
    的头像 发表于 07-27 16:29 455次阅读
    嵌入式Linux <b class='flag-5'>GDB</b>是什么

    GDB调试工具的原理

    一、GDB调试工具的原理 1.1 未执行进程调试 启用gdb调试运行gdb ./test的时候,
    的头像 发表于 11-09 17:04 322次阅读
    <b class='flag-5'>GDB</b><b class='flag-5'>调试工具</b>的原理