【Linux】调试工具gdb

news/2024/7/24 12:56:33 标签: linux

目录

前言

一、前情了解

二、gdb常用命令

1.基本指令

2.断点

3.调试过程

4.查看内容


前言

gdb是Linux环境下了一个调试工具,在代码运行出现问题时,我们可以通过它来进行调试,找出问题的所在。本文来带大家来了解一下gdb的使用方法。

一、前情了解

在使用gdb之前,代码要用gcc进行编译。编译之后得到的可执行文件才能使用gdb来调试。但是要注意,gcc要加上”-g“这个选项,从而得到debug版本的可执行程序,这种版本的程序中包含着调试信息。由于包含调试信息,所以debug版本的可执行程序较大。如下图所示:

 我可以通过如下指令来查看文件信息:

readelf -S 
# readelf用来查看ELF格式的文件信息,常见的文件如在Linux上的可执行文件
# -S用来读取代码的各个段

release版本的查询不到调试信息,但是debug版本的可以查到。入下图:

 

二、gdb常用命令

1.基本指令

  • gdb + 文件命:对此文件开始调试
  • quit:退出gdb
  • l + 行号:显示源代码,接着上次的位置向下,每次10行

注:gdb会记录最近一条命令,如果下一条命令和上一条相同,直接回车即可 

2.断点

用vs中调试的按键对比:

  • b + 行号:给这一行打上断点
  • info + b:查看当前已有的断点
  • d + 断点编号(通过”info + b“来查看):删除断点
  • r(F5):开始调试,转跳到第一个断点,如果没有断点,调试直接结束
  • c(多次F5):跳到下一个断点出停下来
  • disable / enable + 断点编号:关闭 / 打开断点

3.调试过程

  • n(F10):逐过程调试
  • s(F11):逐语句调试
  • finish:跑完当前函数就停下来
  • until + 行号:转跳到指定行(不建议使用)
  • bt:查看当前调用的堆栈

4.查看内容

  • p + 变量名:打印变量的内容
  • display + 变量名:此变量常显示
  • undisplay + 变量编号:此编号的变量取消常显示

http://www.niftyadmin.cn/n/1009900.html

相关文章

学号编码:TooY0ung的学院(结构体)

根据66十二位编码规则,用城市代码和出生年编制学号。 【本笔记适合初通算法的 coder 翻阅】 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础…

【C语言初阶(4)】循环语句3:do while 循环

文章目录 1. 语法结构2. 执行流程3. do while 循环的特点4. do while 循环中的 break 和 continue4.1 do while 循环中的 break4.2 do while 循环中的 continue 1. 语法结构 do {循环语句; } while(表达式) ; ← 这里还有个分号,不要忘了注意:在 do whi…

力扣 108. 将有序数组转换为二叉搜索树

题目来源:https://leetcode.cn/problems/convert-sorted-array-to-binary-search-tree/description/ C题解1:递归法。由于要求是平衡树,又给出了递增数组,所以构建二叉树只需将中间值作为中间节点,左右两边分属左右子树…

分布式软件架构——客户端缓存

浏览器的客户端缓存 当万维网刚刚出现的时候,浏览器的缓存机制差不多就已经存在了。在 HTTP 协议设计之初,人们便确定了服务端与客户端之间“无状态”(Stateless)的交互原则,即要求客户端的每次请求是独立的&#xff…

Git代码管理工具

目录 一、安装Git 二、Git基本概念 三、Git基本操作 初始化Git仓库 Git init 添加文件到暂存区Git add 提交暂存区到本地仓库Git commit 上传至远程并合并 Git push Git 分支管理 创建分支:Git branch 切换分支:Git checkout 删除分支 分支合…

xxl-job源码改造集成:适配opengauss数据、适配单点登录等

目录 一、摘要 二、集成方案 三、集成步骤 3.1 springboot集成xxl-job 3.2 适配高斯数据库(postgresql) 3.3 页面集成 3.4 登录集成 3.5 接口集成 四、部署 一、摘要 公司现在打算重构产品,将原来的quartz替换成xxl-job,主要因为quartz不能动态…

C#异常总结

C#异常总结 定义Try语句异常类创建用户自定义异常搜索调用栈的示例异常抛出 定义 程序中的运行时错误,它违反一个系统约束或应用程序约束,或出现了在正常操作时未预料的情形。 Try语句 指明被异常保护的代码块,并提供代码以处理异常。try由…

分享一些关于 CSS Grid 基础入门知识

网格系统(CSS Grid)是CSS中最重要的特性之一。它能够以简单的方式将元素对齐到列和行中。CSS网格使得设计复杂且响应式的网页变得更加容易,无需使用浮动、表格或定位。它还具有许多更强大的功能,如果你多加练习,就能发…