当前位置:网站首页>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 // 显示函数调用栈
.
.
.
.
.
边栏推荐
- MySQL
- tp6快速安装使用MongoDB实现增删改查
- 【FPGA教程案例6】基于vivado核的双口RAM设计与实现
- Machine learning terminology
- MySQL foundation 06 DDL
- Look at how clothing enterprises take advantage of the epidemic
- Androd gradle's substitution of its use module dependency
- Druid database connection pool
- leetcode 2097 — 合法重新排列数对
- [Cao gongzatan] after working in goose factory for a year in 2021, some of my insights
猜你喜欢
随机推荐
看完这篇 教你玩转渗透测试靶机Vulnhub——DriftingBlues-9
Mathematical knowledge: Nim game game theory
leetcode刷题_两数之和 II - 输入有序数组
Is there a handling charge for spot gold investment
C#应用程序界面开发基础——窗体控制(3)——文件类控件
串口抓包/截断工具的安装及使用详解
Arduino DY-SV17F自动语音播报
How wide does the dual inline for bread board need?
LDC Build Shared Library
Tp6 fast installation uses mongodb to add, delete, modify and check
按键精灵打怪学习-回城买药加血
MySQL --- 数据库查询 - 条件查询
Makefile中wildcard、patsubst、notdir的含义
每日一题之干草堆的移动
How is the mask effect achieved in the LPL ban/pick selection stage?
Kivy tutorial - example of using Matplotlib in Kivy app
tp6快速安装使用MongoDB实现增删改查
Meibeer company is called "Manhattan Project", and its product name is related to the atomic bomb, which has caused dissatisfaction among Japanese netizens
數學知識:臺階-Nim遊戲—博弈論
[system analyst's road] Chapter V double disk software engineering (development model development method)