当前位置:网站首页>GDB 在嵌入式中的相关概念
GDB 在嵌入式中的相关概念
2022-07-03 01:06:00 【TangZhenye】
1. 背景
在嵌入式开发中调试器起着非常大的作用,下载程序、单步调试程序、下断点、通过函数调用栈查看函数调用关系等。通常我们不关心调试器的工作原理,只管调试就好,但是底层原理的认知是非常重要的,本文将打开一大块知识拼图。
2. GDB 是什么
本人理解,不按照官方的解释,什么GNU计划什么的。GDB 是 gcc 工具链带的一个调试程序,注意是程序。
3. GDB 的两个概念
GDB 是程序,调试器也只是运行着 GDB 程序的嵌入式工具罢了,调试器中的 GDB 程序常称为 GDB Server,顾名思义,就是个 GDB 服务器。服务器是服务客户端的,一直监听客户端发来的请求。所以,PC 端一定存在一个 GDB Client 的客户端程序。
经常用的 Jlink,ST-link 等调试工具,一般都用自己的 gdb server 程序运行在上面,因此,我们通常通过芯片上的 JTAG 接口,SWD 接口与调试器连接,连接上后,我们在 IDE 上点击小虫子按钮来调试板子,此时,IDE 中已经集成了 GDB Client,IDE 通过这个 Client 与 ST-link 或者 Jlink 中的 Server 通讯,比如发送个断点指令(在 IDE 中就点击出现个红色圈圈),然后全速运行,Client 就会发送全速运行的命令给 Server,此时 Server 就通过实际的连的杜邦线将信号发到芯片内部调试单元上,芯片就跑了起来。
4. GDB 串行协议
通常我们使用调试器连接开发板,这样 Client 与 Server 之间发送的命令很难观察到,因此,可以通过 qemu 的方式,让 qemu 运行 Server 程序并启动网络协议栈,Client 通过网络的方式连接 Server 来调试 Server 端的代码,这样,通过抓包工具将 Client 与 Server 之间交互的数据给抓下来,就能够知道他俩之间到底都说了啥。
5. GDB 相关命令
gdb xxx.elf // client 端载入符号表
target remote ip:port // 连接 Server
load xxx.elf // 将 elf load 到 Server 端,相当于给板子重新下载程序
b xxx // 在xxx 出下断点
c // 全速运行,遇到断点停止
bt // 显示函数调用栈
.
.
.
.
.
边栏推荐
- Niu Ke swipes questions and clocks in
- 按键精灵打怪学习-多线程后台坐标识别
- 数学知识:Nim游戏—博弈论
- C application interface development foundation - form control (4) - selection control
- Mathematical Knowledge: Steps - Nim Games - Game Theory
- 【系统分析师之路】第五章 复盘软件工程(开发模型开发方法)
- 对非ts/js文件模块进行类型扩充
- 什么是调。调的故事
- Find a benchmark comrade in arms | a million level real-time data platform, which can be used for free for life
- Database SQL language 02 connection query
猜你喜欢
![[androd] module dependency replacement of gradle's usage skills](/img/5f/968db696932f155a8c4a45f67135ac.png)
[androd] module dependency replacement of gradle's usage skills

Work experience of a hard pressed programmer

Telephone network problems

leetcode 2097 — 合法重新排列数对

Expérience de recherche d'emploi d'un programmeur difficile

Androd gradle's substitution of its use module dependency

Basic remote connection tool xshell
![[untitled]](/img/fd/f6b90536f10325a6fdeb68dc49c72d.png)
[untitled]

什么是调。调的故事

MySQL - database query - basic query
随机推荐
一位苦逼程序员的找工作经历
看完这篇 教你玩转渗透测试靶机Vulnhub——DriftingBlues-9
Type expansion of non ts/js file modules
英语常用词汇
【FH-GFSK】FH-GFSK信号分析与盲解调研究
Kivy教程大全之如何在 Kivy 中创建下拉列表
Using tensorboard to visualize the model, data and training process
Mathematical knowledge: Nim game game theory
d,ldc構建共享庫
MySQL
[技术发展-23]:DSP在未来融合网络中的应用
MySQL - database query - basic query
Draw love with go+ to express love to her beloved
MySQL
Vim 9.0正式发布!新版脚本执行速度最高提升100倍
不登陆或者登录解决oracle数据库账号被锁定。
Give you an array numbers that may have duplicate element values. It was originally an array arranged in ascending order, and it was rotated once according to the above situation. Please return the sm
Androd Gradle 对其使用模块依赖的替换
Telephone network problems
[FPGA tutorial case 6] design and implementation of dual port RAM based on vivado core