当前位置: 首页 > news >正文

深入解析:《Gdb 调试实战指南:不同风格于VS下的一种调试模式》

前引:在 Linux 开发的世界里,每一位程序员都曾与 “隐藏极深的 bug” 正面交锋:明明逻辑看似无懈可击,程序却频繁崩溃;运行结果与预期南辕北辙,却找不到任何语法错误;甚至进程突然挂起,日志里只留下一行模糊的报错…… 此时,你需要的不是反复打印日志的 “笨办法”,而是一款能直抵问题核心的调试利器 ——Gdb!

目录

【一】Gdb介绍

【二】Gdb安装

【三】Gdb调试使用

(1)创建目标文件

(2)进入退出调试模式

(3)查看代码

(4)设置断点

(5)查看/删除断点

(6)启动程序

(7)控制程序运行

(8)监视变量

(9)修改变量


【一】Gdb介绍

可理解为Gdb是Linux下的代码调试工具,专为编译型语言(如 C、C++、Go、Fortran 等)设计,是 Linux/Unix 环境下程序调试!程序的发布⽅式有两种, debug 模式和 release 模式, Linux gcc/g++ 出来的⼆进制程 序,默认 release 模式!要使⽤gdb调试,必须在源代码⽣成⼆进制程序的时候,加上 -g 选项,如果没有添加,程序⽆法被编译,例如:

//Release版本
gcc mycmd.c -o mycmd
//DeBug版本
gcc mycmd.c -o mycmd -g

【二】Gdb安装

Centos执行下面指令即可:

sudo yum install gdb -y

【三】Gdb调试使用

(1)创建目标文件

首先我们建一个源文件,以.c为例:

然后我们编译一下得到可执行程序,记住需要加 -g 进入Debug模式!

(2)进入退出调试模式

我们输入下面指令进入调试模式:

gdb text(可执行程序)

如果我们要退出,输入 q 即可

(3)查看代码
指令作用示例
list(或l显示当前位置开始的 10 行代码(gdb) l
list 行号显示指定行号附近的代码(gdb) l 5(显示第 5 行附近)
list 函数名显示指定函数的代码(gdb) l sum(显示 sum 函数)
list 文件名:行号多文件时指定文件查看(gdb) l test.c:8

例如:

(4)设置断点

设置断点之后程序运行到断点之后就会停下来,可以查看快速查看接下来的程序状态

指令格式作用示例
b 行号在当前文件的指定行设断点(gdb) b 8(第 8 行设断点)
b 函数名在函数入口设断点(gdb) b sum(sum 函数入口)
b 文件名:行号多文件时指定文件的行号

(gdb) b test.c:15

条件断点:(注意 if 单独前后空格,具体条件不分开)

b 行数 条件
(gdb) b 8 if i==3
Breakpoint 2 at 0x11c8: file test.c, line 8.

例如:

(5)查看/删除断点

注意:删除操作的是查看断点之后的编号,而不是行数

指令作用示例
info breaki b查看所有断点(含编号、位置)(gdb) i b
delete 断点编号d 编号删除指定断点(gdb) d 2(删除编号 2 的断点)
clear 行号删除指定行的所有断点(gdb) clear 8

例如:

(6)启动程序

启动程序,到断点处或者main开始的第一行停下来

指令作用适用场景
runr从程序开头运行,直到断点 / 结束 / 崩溃需要完整运行程序到断点时
start从程序开头运行,在 main 函数第一行暂停想从程序入口开始逐步调试时

例如:

(7)控制程序运行

可以逐语句、过程的控制程序运行

nextn执行 “当前行”,遇到函数不进入跳过函数调用,适合看整体流程
steps执行 “当前行”,遇到函数会进入进入函数内部,适合查函数内的 bug
continuec继续运行,直到下一个断点 / 结束 / 崩溃跳过当前暂停,直接到下一个关键位置

例如:

(8)监视变量

这里我们就学一种常见的逐个监视变量内容,其它的可以百度

print 变量
或者
p 变量

(9)修改变量

可以在调试模式下修改变量的值,这个是在VS下无法实现的!

set var 变量修改

http://www.jsqmd.com/news/16596/

相关文章:

  • 10 个常见的Python 错误及如何避免它们
  • 2025年手持光谱仪/光谱分析仪/便携式光谱仪厂家推荐榜单:矿石/元素/合金/贵金属分析利器,赛普斯/IF光谱仪精选!
  • 平铺窗口合成器杂谈
  • 微信公众号文章插入附件详细教程-适合于招聘,报名表,公告公示等
  • 题解:CF1914F Programming Competition
  • 独立开发者找蓝海:新词引流实战
  • 使用云服务器搭建飞牛Frp 内网穿透服务
  • 吐槽下小米汽车
  • PlayerPrefs持久化保存
  • 使用VS2022和Unity时可能出现的问题总结
  • 2026 中考游记
  • MinIO 介绍(3)--MinIO 客户端 mc 管理员功能
  • 8.16
  • 2025-10-19
  • 一文读懂隔离见证
  • 12131
  • PWN手的成长之路-19-int_overflow
  • FFmpeg开发笔记(八十四)使用国产的librestreaming实现RTMP直播
  • 2025 年闪测仪厂家企业品牌推荐排行榜,一键式闪测仪,卧式闪测仪,影像闪测仪,立式闪测仪,2D3D 混合式闪测仪,高精度闪测仪,大量程闪测仪,复合式闪测仪公司推荐
  • 2025 年护栏板厂家企业品牌推荐排行榜,波形,高速,镀锌,二波,三波,喷塑,国标,绳索,公路护栏板,护栏板立柱公司推荐
  • 2025 年船用锅炉厂家企业品牌推荐排行榜,基于市场口碑,评选值得信赖的船用锅炉公司推荐
  • 2025 年反应釜厂家企业品牌推荐排行榜,实验室,高压,加氢,不锈钢,试验室,氢化,聚合,高温,钛材反应釜公司推荐
  • 2025 年耐火砖厂家企业品牌推荐排行榜,绝热,轻质,莫来石,保温,莫来石轻质,氧化铝泡沫,氧化铝空心球,抗渗碳,高温轻质莫来石,高温耐火砖公司推荐
  • 2025 年启闭机厂家企业品牌推荐排行榜,四川启闭机,四川卷扬启闭机,四川螺杆启闭机,固定卷扬启闭机,手电两用螺杆启闭机,电装启闭机公司推荐
  • 2025 年清污机厂家企业品牌推荐排行榜,四川清污机,格栅清污机,回转式清污机,回转式格栅清污机,不锈钢清污机公司推荐公司推荐
  • 2025 年铸铁闸门厂家企业品牌推荐排行榜,四川铸铁闸门,镶铜铸铁闸门,渠道铸铁闸门,圆形铸铁闸门,方形铸铁闸门公司推荐
  • 2025 年防撞钢护栏生产厂家最新推荐排行榜:桥梁 / 不锈钢 / 复合管 / 景观 / 灯光 / 热镀锌等多类型护栏精选
  • Java继承的实现
  • 2025 年钢闸门厂家企业品牌推荐排行榜,四川不锈钢闸门,渠道钢闸门,河道钢闸门,水库钢闸门,平面钢闸门,手动钢闸门,电动钢闸门,液压钢闸门公司推荐
  • 「学习笔记」Linux 学习笔记(持续更新中)