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

GDB 简介与使用示例:程序调试从这里开始!

关于学习嵌入式来说,无疑是学的东西很多,记得东西很多,东西写在这里,主要让我自己能够重构问题,以及还有同行者的指点。

一、GDB 是什么?

在我们写程序的过程中,不可避免地会遇到程序崩溃变量异常逻辑错误这些情况。尤其对于社会工作者中从事技术辅助岗位的朋友或刚开始学习编程的小白来说,一段程序“运行错了但不知道哪里错”的时候,简直令人抓狂!

这时候,GDB(GNU Debugger) 就是你的“放大镜”和“侦探工具”!

GDB 是一个开源的调试器,可以帮助我们:

  • 逐步执行程序
  • 查看变量的值
  • 设置断点
  • 分析程序为何崩溃(如段错误)

通俗点说:GDB 可以“暂停”程序的运行,让你看到程序“脑子里在想什么”


二、GDB 能干什么?核心功能介绍

功能作用说明
设置断点在某一行或函数暂停程序运行
单步执行一行一行地执行,查找逻辑错误
查看变量值查看当前变量内容,是否符合预期
查看调用栈查清当前执行位置是怎么走到这里的
修改变量在调试时临时更改变量值,验证逻辑
分析崩溃信息程序崩溃后追踪是哪一行出错了

三、GDB 的基本使用步骤(以 C 语言为例)

1. 准备一段 C 程序(例子很简单)

#include<stdio.h>int main(){  int a = 10;int b = 0;int c = a / b; // 除以 0 会导致崩溃printf("Result is: %d\n", c);return0;}

2. 编译时加上 -g 选项(生成调试信息)

gcc -g test.c -o test

3. 启动 GDB 调试

gdb ./test

进入 GDB 后,会看到提示符:

(gdb)


四、常用命令举例(小白上手无压力)

命令说明
run运行程序
break 行号/函数名设置断点,如 break 5、break main
next执行下一行(不进入函数内部)
step进入函数内部逐步执行
print 变量名查看变量的值
backtrace(简写:bt)打印调用栈信息(程序崩溃时使用)
quit退出 GDB

使用演示:查看程序崩溃原因

(gdb) run

输出:

Program received signal SIGFPE, Arithmetic exception.

这说明程序发生了“浮点异常”,也就是除以 0。

接着输入:

(gdb) backtrace

得到如下信息:

#0 main () attest.c:6

表示问题出现在第 6 行。

继续查看变量:

(gdb) print a

你会立刻明白:int c = a / b; 中的 b == 0 是罪魁祸首!

相关文章:

  • python使用pydantic库结合fastApi实现接口参数验证
  • 华为OD机试-最佳植树距离-二分(JAVA 2025A卷)
  • Linux:信号和线程
  • Hive优化详细讲解
  • AI与大数据如何驱动工业品电商平台的智能决策?
  • WRF-Hydro分布式水文模型:洪水预报、水资源管理与规划、生态水文研究、气候变化影响评估、流域综合管理、水电工程规划与运行
  • C++问题:深拷贝和浅拷贝
  • 华为网路设备学习-25(路由器OSPF - 特性专题 二)
  • 【图像处理入门】11. 深度学习初探:从CNN到GAN的视觉智能之旅
  • 超高速10G采集卡
  • 《记者观察》期刊投稿
  • ③-1实现 FastAdmin 默认开启通用搜索功能的方法
  • python3控制流程
  • 教师办工专用 资源包|课件+手抄报+PPT模板+常用表格 PDF格式93GB
  • Java八股文——计算机网络「网络攻击篇」
  • 数据结构 6(算法)
  • 计算机网络 网络层:数据平面(一)
  • Samba
  • Spark 在小众日常场景中的实战应用:从小店数据到社区活动
  • 对gateway和nocas的理解
  • 有没有便宜的网站制作/无锡网站建设
  • 做音乐网站的栏目/互联网推广怎么做
  • 沈阳网站前端/百度做广告多少钱
  • 软件开发培训机构推荐就业吗/网站怎么优化关键词
  • 千岛湖网站建设/seo优化网站网页教学
  • 建个网站 网页空间多少/标题优化