嵌入式Linux--配置gdb调试环境

嵌入式GDB调试环境搭建与使用 1. GDB 简介 阅读详情

gdb交叉调试类似于网络浏览器,本地PC为客户端,arm开发板为服务器端,双方都要统一编译工具链,版本最好保持一致。
(百度百科)一般来说,GDB主要帮助你完成下面四个方面的功能:
1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。
2、可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)
3、当程序被停住时,可以检查此时你的程序中所发生的事。
4、你可以改变你的程序,将一个BUG产生的影响修正从而测试其他BUG。

一、下载源码

http://ftp.gnu.org/gnu/gdb/
新的版本对环境的要求要高点,如果出错了可以尝试更换旧点的版本,我使用的版本是 gdb-7.8.1.tar.gz。

二、获取arm-linux-gdb(pc)

arm-linux-gdb属于调试程序,主机可以通过执行该程序打开arm可执行文件。一开始照着网上的教程来操作,理想情况.configure、make、make install三步到位,实际情况是参数换了好几组,make始终会报error。他们的思路是通过gdb源码配置->编译->生成arm-linux-gdb,我失败的原因可能是交叉编译工具链不适合此操作,当我查看工具链的时候,发现工具链本身自带一个arm-linux-gdb程序!那我就没必要再去自己编译生成一个了。如果工具链没有这个程序再去考虑编译安装,可以参考这篇文章。
在这里插入图片描述

三、获取gdbserver(arm)

gdbserver运行在arm开发板中,生成步骤:

cd gdb-7.8.1/gdb/gdbserver/
./configure  --target=arm-linux --host=arm-linux
make CC=arm-linux-gcc

参数含义:

--target 指定了目标机交叉编译器前缀
--host   指定了编译后的程序需要在哪里运行
CC=arm-linux-gcc 用来指定交叉编译工具为arm-linux-gcc,需要根据你自己的来指定。

这个过程一般不会出错,执行完命令后会在该目录下生成一个gdbserver可执行文件,将该文件拷贝到开发板的/usr/bin目录下,方便调用。这里需要注意的是运行gdbserver还需要libthread_db库,若你自己做的文件系统内没有这个库的话需要将本地交叉编译工具中的libthread_db*拷贝到开发板的/usr/lib中去。
在这里插入图片描述

四、使用方法

4.1 编译程序

hello.c

#include <stdio.h>

int main()
{
        int i = 1;

        while (i++)
        {
                printf("num is : %d \n", i); 
        }
    
        return 0;
}

Makefile

all:
        arm-linux-gcc -g hello.c -o hello

clean:
        rm hello

arm-linux-gcc -g用于编译出含有gdb调试信息的可执行文件。

4.2 ARM端打开gdbserver

ARM端执行如下内容,gdbserver 本地IP+端口号+可执行文件

gdbserver 192.168.40.178:1111 hello

4.3 PC端连接gdbserver

PC端执行:

arm-linux-gdb ./hello
target remote 192.168.40.178:1111

pc端连接之后,在arm板子这边可以看到远程连接信息。

4.4 gdb调试

通过简单的设置断点、运行来观察信息,可以看到已经能够gdb调试了。

五、其他

https://gdbgui.com/installation.html

gdbgui -g arm-linux-gdb test(test为要调试的可执行程序)

参考文章:

【ARM Linux 系统稳定性分析入门及渐进11 -- GDB( print 和 p 的使用| @ 和 ::的使用|ptype|{<type>} <addr> )】 在GDB中,你可以使用的形式来将一个地址转换为特定的类型。这在处理低级别的内存操作时非常有用。在这个例子中,表示将地址0x40063c转换为float*类型的指针,然后运算符获取这个指针指向的值。结果是,这个地址上存储的浮点数3.14159被正确地读取出来。注意,这种形式对于处理复杂的数据类型也非常有用,例如结构体或类。你可以使用这种形式来获取存储在特定地址的数据的成员。$2 = 42在这个例子中,地址0x40063c被转换为MyStruct*类型的指针,然后使用->运算符来获取a成员的值。 阅读详情

相关推荐

【ESP32-S3量产指南】基于Flash下载工具实现Release模式Flash加密与安全配置

本文详细介绍了ESP32-S3量产阶段如何通过Flash下载工具实现Release模式下的Flash加密与安全配置。从加密模式选择、工具配置到分区表优化,提供了一套完整的量产安全解决方案,帮助开发者有效防止固件泄露和篡改,确保设备安全。

weixin_28730131的博客 231

Linux工具之gdb(含移植到arm-linux系统)

Linux工具之gdb(含移植到arm-linux系统)

NRWHF的博客 4269

全国30米分辨率逐年植被覆盖度(FVC)数据集

植被覆盖度是描述地表植被的重要参数与生态环境的基本指标,在大气圈、土壤圈、水圈和生物圈中都占据着重要的地位,区域及全球范围的植被覆盖度估算对植被及相关领域的研究具有重要意义。分别对LANDSAT 5/7/8系列数据计算FVC,其中Landsat5 和Landsat 7NDVI计算利用 B4和B3波段,Landsat8 和Landsat9 NDVI计算利用 B5和B4波段。算法从当年所有观测数据中,以低云、低探测角度和最高NDVI值为标准,选择最佳的可用像元值,并进行换算。(3) FVC的计算。

地球资源数据云的官方博客 1808

交叉编译嵌入式linux平台的gdb工具

pc机系统:ubuntu系统目标板的编译工具链:arm-openwrt-linux-gcc嵌入式Linux目标板:R328。

1678

工程伦理-知识点汇总

工程伦理-知识点汇总

m0_46091747的博客 1万+

90nm CMOS工艺下6μW超低功耗LDO设计实战:从原理图到版图全解析

本文详细解析了在90nm CMOS工艺下设计一款静态功耗仅为6μW的超低功耗LDO(低压差线性稳压器)的全过程。文章深入探讨了如何通过改进型翻转电压跟随器(FVF)架构实现无输出电容设计,在满足极低功耗和芯片面积高效(chip-area-efficient)要求的同时,确保环路稳定性与快速瞬态响应,为物联网、可穿戴设备等应用提供关键电源管理解决方案。

weixin_29196613的博客 277

Linux下GDB简明教程(包括GUI模式)

我们在linux下调试程序时,一般都会用到gdb,本文主要介绍一下gdb常用的操作以及TUI模式的使用方式。 一 常用操作 假设我们有段程序叫main.c,代码如下, #include &amp;amp;amp;amp;amp;amp;lt;stdio.h&amp;amp;amp;amp;amp;amp;gt; typedef struct { char name[8]; int age; int birthYear; } student; int func(int dat

爱就是是恒久忍耐的专栏 6828

【OpenClaw企业级智能体实战】第10篇:医疗行业OpenClaw实战:病历自动书写、医保智能审核与患者随访管理(附HIPAA合规配置+完整代码)

医疗行业正面临“效率提升需求”与“合规监管红线”的双重矛盾:病历书写占据医生30%-50%工作时间,医保审核效率低下,患者随访工作量巨大,但医疗数据“不出域”“责任不转移”的要求又限制了AI落地。本文基于华为云、腾讯云安全规范及中关村科金、复旦大学附属中山医院等真实实践,拆解OpenClaw在医疗场景的五大核心应用(病历自动书写、医保智能审核、患者随访管理、科研文献综述、医学影像预处理),提供私有化部署架构、HIPAA合规配置模板、完整实操流程及可直接运行的代码。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 441

嵌入式Linux(三):GDB程序调试

搞嵌入式Linux应用开发,GDB调试是必备技能,这里,简单记录一下GDB一些常用的调试方式。

weixin_45259896的博客 1367

操作系统实验四 进程运行轨迹的跟踪与统计(哈工大李治军)

实验4 进程运行轨迹的跟踪与统计 实验目的 掌握 Linux 下的多进程编程技术; 通过对进程运行轨迹的跟踪来形象化进程的概念; 在进程运行轨迹跟踪的基础上进行相应的数据统计,从而能对进程调度算法进行实际的量化评价,更进一步加深对调度和调度算法的理解,获得能在实际操作系统上对调度算法进行实验数据对比的直接经验。 实验内容 进程从创建(Linux 下调用 fork())到结束的整个过程就是进程的生命期,进程在其生命期中的运行轨迹实际上就表现为进程状态的多次切换,如进程创建以后会成为就绪态;当该进程被调度以

leoabcd12的博客 4654

每周技巧tc 问题处理技巧Teamcenter

(内部)Dataset和Tool相关之2.1——Tool轮询Contents Type和Type Name-赖良顺.docx。(内部)Dataset和Tool相关之3.2——编写Batch和Perl为客户端自动注册相关内容-赖良顺.docx。(内部)Dataset和Tool相关之1.1——Tools和Datasets参数定义-赖良顺.docx。(内部)Dataset和Tool相关之1.2——相关首选项定义及修改-赖良顺.docx。(内部)Dataset和Tool相关之0——概述-赖良顺.docx。

TC技术专栏 1230

嵌入式linux开发板+vscode,配置gdb调试环境

如果开发板本身没有自带gdb和gdb server,那么就需要上网进行下载。因此总的来说分为两步:step1 连接网络。

qq_44157835的博客 1631

Pareto 优化 (Pareto Optimization) 算法详解及案例分析

Pareto 最优解是指在多目标优化问题中,无法通过改进一个目标而不损害其他目标的解。具体来说,对于一个解x∗x^*x∗,如果不存在另一个解xxx使得所有目标函数fixf_i(x)fi​x都不劣于fix∗f_i(x^*)fi​x∗,且至少有一个目标函数fjxf_j(x)fj​x优于fjx∗f_j(x^*)fj​x∗,则x∗x^*x∗是 Pareto 最优解。

闲人编程的博客 2764

嵌入式Linux驱动开发环境深度配置:从内核树构建到GDB调试

嵌入式Linux驱动开发环境深度配置的关键环节包括内核树构建与GDB调试。内核树构建涉及获取内核源码、配置Makefile、选择配置方式(makemenuconfig等)、编译内核及安装模块等步骤,需要注意目标平台适配和依赖库安装。GDB调试需要安装调试工具并移植GDBserver到开发板,掌握break、continue、step等核心调试命令,通过调试案例可有效定位驱动问题。开发过程中可能遇到内核配置错误、调试符号缺失等问题,需针对性解决。随着物联网等技术的发展,嵌入式驱动开发工具将趋向自动化与智能化。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 815

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Linux下交叉编译gdb和gdbserver

   平台:tq2440  GCC:  gcc version 4.3.3 (Sourcery G++ Lite 2009q1-176)    这里过程中参考了下面两篇博文: http://blog.youkuaiyun.com/hejianhua/article/details/7254836 http://blog.youkuaiyun.com/fly_qj/article/details/827255...

weixin_33881041的博客 295

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

嵌入式Linux系统开发板搭建GDB调试环境

嵌入式Linux系统开发板搭建GDB调试环境

jwpython的博客 1353

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

一文掌握vscode远程gdb调试

0 背景 最近在同事的安利下,尝试了用 vscode 做 gdb 调试,用完之后,“真香”。 话不多说,本文要实现的是:在 windows 端远程调试 linux 服务器和 arm 嵌入式设备上的 c++ 代码,对 gdb 调试的配置及使用进行一个整理 1 远程连接 首先需要实现远程连接服务器,在插件库中搜索 “remote-ssh”,双击下载安装即可(下图中我已安装好),安装好之后在侧边栏出现远程资源管理器 点击 + 号,在弹出的命令窗口中输入 ssh 登陆指令,按照提示,输入密码并确认,即

ZONGXP的博客 2万+

gdb和gdbserver的安装和调试

gdb是Linux环境下的代码调试工具,其安装步骤如下:安装step1:首先检查系统中有没有安装过,有的话用一下命令卸载gdb旧版本step2:在网址:http://ftp.gnu.org/gnu/gdb下载gdb源码包(这里楼主选的是8.0.1版本);或者直接在linux系统中用wget命令下载:wget http://ftp.gnu.org/gnu/gdb/gdb-8.0.1.tar.gz ...

北极洲的博客 3779

gdb+gdbserver远程调试环境搭建及调试

远程调试(即gdb+gdbserver)环境由宿主机GDB和目标机调试stub共同构成,两者通过串口或TCP连接。使用 GDB标准程串行协议协同工作,实现对目标机上的系统内核和上层应用的监控和调试功能。调试stub是嵌入式系统中的一段代码,作为宿主机GDB和目标机调试程序间的一个媒介而存在。

m0_56121792的博客 4270

GDB 在arm开发板上的远程调试(转载)

转载自:http://blog.sina.com.cn/s/blog_640531380100zvle.html   嵌入式Linux的GDB调试环境由Host和Target两部分组成,Host端使用arm-linux-gdb,Target Board端使用gdbserver。调试时,应用程序在嵌入式目标系统上运行,而gdb调试在Host端。 一、编译安装gdb+gdbserver 这

kaloha3的专栏 1021

gdb+gdbserver调试arm-linux程序

引用:http://www.xxlinux.com/linux/article/accidence/install/20070531/8639.html 我的环境: Fedora 14 虚拟机 编译器:arm-linux-gcc-4.3.2 开发板:TQ2440 嵌入式Linux的GDB调试环境由Host和Target两部分组成,Host端使用ar

u010068275的专栏 519

嵌入式Linux的GDB调试环境建立

原文来源:http://www.embeddedlinux.org.cn/html/jishuzixun/201404/07-2831.html?bsh_bid=383072872

牧羊人zqh 1136

linux上用gdb调试文件夹,嵌入式Linux的GDB调试环境建立

嵌入式Linux的GDB调试环境由Host和Target两部分组成,Host端使用arm-linux-gdb,Target Board端使用gdbserver。这样,应用程序在嵌入式目标系统上运行,而gdb调试在Host端,所以要采用远程调试(remote)的方法。一、建立安装gdb组件从ftp://ftp.gnu.org/gnu/gdb上下载gdb套件,我下载的是gdb-5.2.1.tar.gz...

weixin_33592736的博客 311

CentOS 建立嵌入式开发环境

一、安装 minicom yum install minicom /dev/ttyS0 /dev/ttyUSB0 二、安装 NFS - (CentOS 配置 NFS) 三、安装 tftp 四、配置 arm-linux-gcc/gdb 下载 arm-linux-gcc-4.4.3.tar.gz tar -xzvf arm-linux-gcc-4.4.3.tar.gz mkdir

RobertBaker的专栏 3311

海思GDB调试

1.下载gdb源码 嵌入式Linux的GDB调试环境由Host和Target两部分组成,Host端使用arm-linuxgdb,Target Board端使用gdbserver。这样,应用程序在嵌入式目标系统上运行,而gdb调试在Host端,所以要采用远程调试(remote)的方法。进行GDB调试,目标系统必须包括gdbserver程序(在主机上正对硬件平台编译成功后下载到.........

kx453653102的专栏 4988
上一篇: 一步步完善rootfs:4.配置动态链接库
下一篇: 嵌入式Linux-Eclipse下gdb调试arm开发板
奔向星辰花海
博客等级 码龄10年 113粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值