Linux-Arm GDB调试(本地和远程)

news2024/10/13 2:21:44

目录

问题描述

已有coredump

没有coredump

小结


问题描述

        Linux本机调试使用GDB非常方便,但嵌入式Linux设备资源有限,通常并没有交叉编译工具,那嵌入式设备上的应用发生问题如何查找问题?通常IDE有远程DEBUG功能,这种能快速定位固定且容易复现的错误。那么不定期发生,且位置不固定的Bug可能就要用到GDB了。

已有coredump

        这种情况是app发生了crash,大多原因是非法访问内存,这个时候很容易能查到设备发生崩溃时,最后调用的堆栈,然后沿着前后调用查找问题即可,首先要开启linux设备的coredump功能:

  • 是否需要根据应用程序不同的pid生成不同的coredump文件,0为不需要,主要考虑是空间问题。
echo 0 > /proc/sys/kernel/core_uses_pid
  • 将生成的coredump文件重定向到自己的文件夹,方便查找。
echo  home/app/log/coredump > /proc/sys/kernel/core_pattern
  • 崩溃时生成无限制大小的coredump文件。
ulimit -c unlimited
  • 接下来将发生问题的app和coredump文件放入linux环境中。
  • 找到对应的交叉编译工具链,使用其进行调试。
sudo ./usr/local/oecore-x86_64/sysroots/x86_64-angstromsdk-linux/usr/bin/arm-angstrom-linux-gnueabi/arm-angstrom-linux-gnueabi-gdb app coredump


最终定位到问题所在。

没有coredump

个别情况下,并没有发生crash,但是程序卡死或者无响应,这个时候并不会生成coredump文件,那么就需要进行远程在线调试。

  • 首先在设备端开启gdbserver服务
  • 填入虚拟机Linux的IP和监听的端口
  • 填入正在发生问题的应用进程,比如此处的561
gdbserver --attach 192.168.22.149:21 561                                                                             
  • 虚拟机linux端,则先打开gdb调试器:
sudo ./arm-angstrom-linux-gnueabi-gdb
  • 然后在调试器命令行输入:
target remote 192.168.22.1:21
  • gdb会读取当前进程的所有调用,并显示出卡死位置

  • 最后使用指令bt full定位问题原因

小结

        随机性问题,问题一旦发生,保存现场十分重要,不知道何时才会复现,要基于当前的设备状态,尽可能的去追溯本次的问题,这样才能有效的解决问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1567128.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【计算机视觉】四篇基于Gaussian Splatting的SLAM论文对比

本文对比四篇论文: [1] Gaussian Splatting SLAM [2] SplaTAM: Splat, Track & Map 3D Gaussians for Dense RGB-D SLAM [3] Gaussian-SLAM: Photo-realistic Dense SLAM with Gaussian Splatting [4] GS-SLAM: Dense Visual SLAM with 3D Gaussian Splatting …

MySQL数据库 数据库基本操作(一):数据库的认识与基本操作

1. 数据库的基本认识 1.1 什么是数据库 专家们设计出更加利于管理数据的软件——数据库,它能更有效的管理数据。数据库可以提供远程服务,即通过远程连接来使用数据库,因此也称为数据库服务器。 1.2 数据库的分类 数据库可以大体分为:关系…

基于Python的简单颜色替换

当我们临时需要改变一个照片的颜色,使其符合我们想要的主题色时,对于不会PS的我就只能使用一下Python来实现这个简单的过程 比如我想要中国农大农学院的院徽,但在官网上提取出来的图片是白色的 而我想要符合农学主题的绿色,将图片…

产品经理知识地图:与NPDP国际资格认证知识体系相吻合的实践探索

在数字化时代的浪潮下,产品经理的角色愈发关键。作为连接市场、技术与用户的桥梁,产品经理需要拥有全面的知识体系与多元化的能力。本文旨在构建与NPDP产品经理国际资格认证知识体系相吻合的产品经理知识地图,并结合实际案例,探讨…

VSCode安装及Python、Jupyter插件安装使用

VSCode 介绍 Visual Studio Code(简称VSCode)是一个由微软开发的免费、开源的代码编辑器。VSCode是一个轻量级但是非常强大的代码编辑器,它支持多种编程语言(如C,C#,Java,Python,PHP&#xff0…

jupyter notebook 配置默认文件路径

Jupyter是一种基于Web的交互式计算环境,支持多种编程语言,如Python、R、Julia等。使用Jupyter可以在浏览器中编写和运行代码,同时还可以添加Markdown文本、数学公式、图片等多种元素,非常适合于数据分析、机器学习等领域。 安装 …

Redis底层数据结构-Dict

1. Dict基本结构 Redis的键与值的映射关系是通过Dict来实现的。 Dict是由三部分组成,分别是哈希表(DictHashTable),哈希节点(DictEntry),字典(Dict) 哈希表结构如下图所…

arm的状态寄存器

目录 一、arm 的 PSRs二、CPSR2.1 CPSR_cxsf 三、SPSR四、APSR 一、arm 的 PSRs arm 中有很多程序状态寄存器(Program Status Registers,PSRs)用于存储处理器的状态信息,包括 CPSR\SPSR\FPSR\APSR 等: CPSR&#xff…

基于vscode Arduino插件开发Arduino项目

基于vscode Arduino插件开发arduino项目 插件配置问题记录1. 指定编译输出文件夹2. 编译下载时不输出详细信息3. 输出端口信息乱码4. 通过串口输出中文,vscode对应的串口助手上会显示乱码(未解决) 插件配置 环境:Arduino插件版本…

【leetcode】将x减到0的最小操作数/水果成篮/找到字符串中所有字母异位词{史上最容易懂的解析}

文章目录 1.将x减到0的最小操作数2.水果成篮3.找到字符串中所有字母异位词 1.将x减到0的最小操作数 分析题目 x不断地减去数组两端的值 看能否减到0;是不是就是在问:nums数组中存不存在【左端右端】组成的连续区间,区间上数的和为x 继续分析 …

VSCode 插件 Template String Converter

1. 插件介绍 点击安装 Template String Converter 插件 Template String Converter 翻译后:模板字符串转换器。 插件作用:当 JavaScript 字符串中键入 ${ 时自动将引号转为反引号,当删除 ${ 时自动将反引号转为普通引号 功能示例&#xff…

Verilator入门11:仿真玄铁测试case

这一节,介绍下如何使用verilator仿真玄铁,之前有相关介绍,本节将进一步介绍下玄铁具体case的仿真,首先需要clone玄铁代码: git clone https://github.com/kknet/openc910.git 同时下载交叉编译工具,网站地…

YOLOv8 UI界面设计+热力图显示

进入可视化设计界面,设计UI pyside6-designer 设计好UI保存,然后通过以下命令将ui文件保存为py pyside6-uic myui.ui > myui.py 通过以下命令将资源文件qrc保存为py pyside6-rcc my_rc.qrc > my_rc.py 写主窗口函数实现功能... 项目基于yol…

vue 数据埋点

最近菜鸟做项目,需要做简单的数据埋点,不是企业级的,反正看渡一的视频,企业级特别复杂,包括但不限于:错误收集、点击地方、用户行为…… 菜鸟的需求就是简单收集一下用户的ip、地址、每个界面的访问时间&a…

Ubuntu20.04使用Neo4j导入CSV数据可视化知识图谱

1.安装JDK( Ubuntu20.04 JDK11) sudo apt-get install openjdk-11-jdk -y java -version which java ls -l /usr/bin/java ls -l /etc/alternatives/java ls -l /usr/lib/jvm/java-11-openjdk-amd64/bin/java确认安装路径为/usr/lib/jvm/java-11-openjd…

【VUE+ElementUI】el-table表格固定列el-table__fixed导致滚动条无法拖动

【VUEElementUI】el-table表格固定列el-table__fixed导致滚动条无法拖动 背景 当设置了几个固定列之后,表格无数据时,点击左侧滚动条却被遮挡,原因是el-table__fixed过高导致的 解决 在index.scss中直接加入以下代码即可 /* 设置默认高…

最优算法100例之26-翻转单词顺序

专栏主页:计算机专业基础知识总结(适用于期末复习考研刷题求职面试)系列文章https://blog.csdn.net/seeker1994/category_12585732.html 题目描述 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句…

【北京迅为】《iTOP-3588开发板系统编程手册》第1章 系统编程初探

RK3588是一款低功耗、高性能的处理器,适用于基于arm的PC和Edge计算设备、个人移动互联网设备等数字多媒体应用,RK3588支持8K视频编解码,内置GPU可以完全兼容OpenGLES 1.1、2.0和3.2。RK3588引入了新一代完全基于硬件的最大4800万像素ISP&…

基于单片机的超声波测距仪设计_kaic

摘 要 如今社会持续深化转型,在人工智能领域,传感器采集外部数据,经过处理器对数 据运算和处理,从而实现相应的功能。比如自动驾驶技术中,超声波传感器应用广泛, 超声波是一种频率在 20khz 以上的声波&…

STM32-04基于HAL库(CubeMX+MDK+Proteus)中断案例(按键中断扫描)

文章目录 一、功能需求分析二、Proteus绘制电路原理图三、STMCubeMX 配置引脚及模式,生成代码四、MDK打开生成项目,编写HAL库的按键检测代码五、运行仿真程序,调试代码 一、功能需求分析 在完成GPIO输入输出案例之后,开始新的功能…