嵌入式(十三)——gdb调试
前言
对于C语言新手建议用printf打印大法
对于gdb本章节只做简单介绍
gdb是GNU发布的一款强大的程序调试工具。
GDB主要完成下面三个方面的功能:
- 启动被调试程序
- 让被调试的程序在制定的位置停止
- 当程序被停住时,可以检查程序状态-变量值
学习GDB的三步走(可以自己去看十篇博客(GDB详解)):
- 学会使用GDB(基础命令)
- 掌握GDB的场景的使用技巧(多任务、网络程序、内存管理、core、汇编程序)
- 尝试gdb(实现一个调试器:应用程序)
本章节只学习第一步,第三步的推荐网址:GDB 实现原理介绍
gdb调试
gcc -g gdb_demo.c -o gdb_demo(需要加上-g)
gdb gdb_demo (gdb + 可执行文件)
- run:在调试器中运行程序
- list:查看程序源码(只能一遍)(–tui)
- break + 行号:设置断点
- break + 行号 + if条件:设置断点
- break + 函数名:设置断点(到调用该函数时停止)
- info break:查看断点信息
- delete + 断点编号(1、2):删除断点
- enable/disable:使能断点
- print + /x + 变量名:
- quit:退出
- next:单步执行,不进入子函数
- step:单步执行,进入子函数
- continue:跳过此断点,到下个断点停止
- finish:继续执行,在函数内部时,执行到函数结束
- call + 函数名:调用函数(call func(6))
- print + 变量=值:设置变量的值
- clear:清除所有断点
- ptype + 变量:查看变量的类型
gdb gdb_demo --tui(图示)
gdb + 可执行文件 + --tui:启动图形化调试窗口
layout asm(显示汇编)
layout src (切换到源码)
layout split(同时显示汇编和源码)
可以直接简写成首字母(如n(next)、d(delete)、r(run))
段错误
看懂
#include <stdio.h>
int main(int argc,char *argv[])
{
char *ptr = "hello world";
ptr++;
(*ptr) = 'E';
printf("ptr = %s\n",ptr);
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理