ESP32 coredump 分析

640?wx_fmt=jpeg

1.

上次写了一个 ESP32 入门,我想有必要再写这篇文章,这次主要是分析 coredump 的,这就像 Android 和 Linux 系统的死机分析,有意思,也有难度。我们写代码的时候,不可避免的会遇到一些 coredump 的问题,这时候我们就要去分析 coredump 的原因,在 Linux 内核也是一样, coredump 主要是打印一些堆栈调用,通过看到这些堆栈调用信息,我们可以定位到问题原因。

 

网上有很多分析 coredump 的文章,但是清一色的都是翻译官网的东西,没有实际去测试运行过。

 

我觉得 ESP32 还有一个好处是,对于初学者真的太方便了,买个 Linux 开发板可能要几百块,但是买一个 ESP32 模块的话,也就 40 块钱,而且也是跑 Freertos 系统的,还有还有就是非常方便携带,调试烧录供电都可以用一个 usb 线搞定,说真的,我没有收钱宣传,是真的适合没有钱又喜欢入门嵌入式的同学们,但是这个只是起点,嵌入式后期我觉得一定是要学习Linux 的。

 

2.

coredump 官方文档

https://esp-idf-zh.readthedocs.io/zh_CN/latest/api-guides/core_dump.html

 

保存出现 coredump 的日志

sC4AAA4AAABkAQAA	fLr8P1Dx/T8U8/0/	gPH9P7Dy/T+suvw/xD/8P7jl/T98uvw/vD/8PxQAAAAAAAAAOGD8P3y6/D8AAAAA	BQAAABjn/T9wdGhyZWFkAAcAAFEFNFQAfxTz/T8AAAAAIAsGAAUAAAAAAAAA	AAAAAAAAAAAAAAAAAJj8P2iY/D/QmPw/AAAAAAAAAAABAAAAAAAAAAhCQD8AAAAA	SB0AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA	AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA	AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA	AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA	AAAAAAAAAAAAAAAAAAAAAAAAAAA=	hOkRgEoVDkAwBwYAsggOgBDy/T/ku/w/fLr8PwAAAAD/AAAAAAAAAAAAAAAA	8PH9P+S7/D/ku/w/3OUTQAEAAAAhAAYABAAAAAgAAAAcAAAAAAAAAP0UAEANFQBA	........

 

烧录到设备上对应的 elf 文件

elf 文件类似于 Linux 上的 Vmlinx 文件, 通过这个文件和 dump 信息,还有 gdb 就可以找到 crash 位置附近的上下文代码,有了上下文代码,作为百里挑一码农的你,肯定不会放过蛛丝马迹找到 bug 所在。

 

elf 文件是我们编译的时候生成的,我们每次编译一次就会有不同的符号表,当然,我们分析 coredump 的时候,烧录到设备的 bin 文件和 elf 文件要对应,要不然分析结果千壤之别。

640?wx_fmt=png

 

3.执行命令如下

官网还有另外一个命令,那个命令每次运行都出现错误,如果有知道原因的可以留言告知我,万分感谢。

./components/espcoredump/espcoredump.py dbg_corefile cat-wc/build/app_main.elf -c cat-wc/build/coredump.bin -t b64

 

$ ./components/espcoredump/espcoredump.py dbg_corefile cat-wc/build/app_main.elf -c cat-wc/build/coredump.bin -t b64	
espcoredump.py v0.1-dev	
GNU gdb (crosstool-NG crosstool-ng-1.22.0-61-gab8375a) 7.10	
Copyright (C) 2015 Free Software Foundation, Inc.	
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>	
This is free software: you are free to change and redistribute it.	
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"	
and "show warranty" for details.	
This GDB was configured as "--host=i686-build_pc-cygwin --target=xtensa-esp32-elf".	
Type "show configuration" for configuration details.	
For bug reporting instructions, please see:	
<http://www.gnu.org/software/gdb/bugs/>.	
Find the GDB manual and other documentation resources online at:	
<http://www.gnu.org/software/gdb/documentation/>.	
For help, type "help".	
Type "apropos word" to search for commands related to "word"...	
Reading symbols from cat-wc/build/app_main.elf...done.	
[New <main task>]	
[New process 1]	
[New process 2]	
[New process 3]	
[New process 4]	
[New process 5]	
[New process 6]	
[New process 7]	
[New process 8]	
[New process 9]	
[New process 10]	
[New process 11]	
[New process 12]	
[New process 13]	
[New process 14]	
#0  0x4012cbc3 in ledc_channel_config (ledc_conf=<optimized out>)	at /cygdrive/e/AiThinkerIDE_V0.5/cygwin/home/aithinker/project/esp-idf/components/driver/ledc.c:328	
328         return ret;	
[Current thread is 1 (<main task>)]	
(gdb)

推荐阅读

推荐周立功先生的一本书

一个从华为离职的朋友

分享一个非常 nice 的工具

640?wx_fmt=gif   

640?wx_fmt=jpeg

 

 

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

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

相关文章

我那个在华为过得很好的朋友

最近华为的事件又上了热搜&#xff0c;不管是微信还是知乎&#xff0c;都在啃这个热点&#xff0c;一种是看热闹不闲事大的&#xff0c;一种是看热闹闲事大的&#xff0c;我呢&#xff1f;昨晚跟我的一个华为朋友玩了几把王者荣耀&#xff0c;虽然不能带他全盘浪&#xff0c;但…

Redis概述_使用命令对redis的数据进行增删改查_Jedis连接redis进行数据操作_redis进行数据缓存案例

学习目标 redis 概念下载安装命令操作 1. 数据结构持久化操作使用Java客户端操作redis Redis 前言(从百度上抄的, 看看了解一下, 懒得排版了) 1. 概念&#xff1a; redis是一款高性能的NOSQL系列的非关系型数据库1.1.什么是NOSQLNoSQL(NoSQL Not Only SQL)&#xff0c;意即…

要有敬畏之心

最近开始周六也没有休息&#xff0c;心理上还是很难接受&#xff0c;也不是说周六上班有多累&#xff0c;就是没有找到对的感觉&#xff0c;就像和一个不喜欢的姑娘相亲&#xff0c;就算姑娘家财万贯&#xff0c;貌美如花&#xff0c;自己还是提不起兴趣&#xff0c;可能这就是…

复习Java_List_Set_HashSet原理_Collections使用_Comparator使用

复习Java_List_Set_HashSet原理_Collections使用_Comparator使用 主要内容 数据结构List集合Set集合Collections 第一章 数据结构 2.1 数据结构有什么用&#xff1f; 加快应用开发, 提高程序健壮性, 提高程序可重用性 2.2 常见的数据结构 数据存储的常用结构有&#xff…

最近,我也要买书了

1.当当网给我做的一个活动&#xff0c;购书优惠&#xff0c;确实是福利了&#xff0c;而且筛选的书籍对我们做嵌入式都是比较有帮助的&#xff0c;你应该知道&#xff0c;做活动的时候&#xff0c;价格都是比较不错&#xff0c;不要错过了时间再想要当时的价格&#xff0c;有需…

复习Java异常处理_异常分类_自定义异常_线程初步了解

复习Java异常处理_异常分类_自定义异常_线程 主要内容 异常、线程 教学目标 第一章 异常 1.1 异常概念 异常&#xff0c;就是不正常的意思。在生活中:医生说,你的身体某个部位有异常,该部位和正常相比有点不同,该部位的功能将受影响.在程序中的意思就是&#xff1a; 异常…

跟我师兄聊天引发的思考

我一个师兄&#xff0c;上大学的时候关系很好&#xff0c;我师兄也很喜欢打篮球&#xff0c;也许这就是我们有很多共同话题的原因&#xff0c;人是很奇怪&#xff0c;特别是做技术的&#xff0c;本来就比较闷&#xff0c;很难跟陌生人马上来电&#xff0c;但是如果有个共同爱好…

别忘了当初你为何出发

最近&#xff0c;特别喜欢听一个广播&#xff0c;宝安905&#xff0c;估计是因为我最近营养不太够&#xff0c;需要多喝一些鸡汤&#xff0c;刚好这个电台广播的鸡汤非常够味&#xff0c;非常符合我现在的胃口。比如这一句「你想收获世界上最好的东西&#xff0c;先让世界看到最…

一位跟我一样疑惑的同学~

今天遇到一个同学给我提的问题&#xff0c;非常像我之前的经历&#xff0c;想分享给大家&#xff0c;最近手机码字&#xff0c;觉得有用&#xff0c;给个在看或者转发&#xff0c;小弟感激不尽&#xff0c;在所不辞。~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~我2012年毕业&#xff…

在深圳转户口这件小事

我对于政策这种事情是比较感冒的&#xff0c;比如老师说不能去外面上网&#xff0c;我是绝不会偷偷跑出去的&#xff0c;来深圳的第一年&#xff0c;我就想着办理户口了&#xff0c;第一次机会是在 TCL 的时候&#xff0c;人事部门有专门给我们办理转深户的&#xff0c;不过那时…

CPU 和 GPU

端午回来&#xff0c;发的第一篇文章&#xff0c;还在谋划其他事情&#xff0c;大家共勉。现在电脑这么普及&#xff0c;应该每个人都知道 CPU &#xff0c;即使不懂电脑的人都能憋出大招告诉你电脑里面有一个 CPU&#xff0c;CPU 是中央处理器&#xff0c;是很多很多年积累下来…

React Native - 3 View, Text简介以及onPress onLongPress事件

我们要生成如下的构图 直接上图&#xff0c;不解释。如下图所示&#xff0c;定义函数&#xff0c;函数之间不需要逗号&#xff0c;在元素上添加事件&#xff0c;使用关键字this.{function name}转载于:https://www.cnblogs.com/yahb/p/6864382.html

创业日记

最近在拼命的写代码&#xff0c;估计这段时间写代码的行数等于过去一年的了&#xff0c;这是保守估计&#xff0c;如果不保守估计就不好说了&#xff0c;我本来想在原来的小组群里发话说&#xff0c;打算是下面这段对话我&#xff1a;X总&#xff0c;你站起来X总&#xff1a;为…

线程基础知识_线程生命周期_从JVM内存结构看多线程下的共享资源

线程生命周期 线程状态 New: 线程创建(new Thread()) Runnable: 线程可运行(thread.start()), 注: 调用start并不一定是运行状态, 可能在等待CPU调度 Running: 线程进入运行状态 Blocked: 阻塞状态(object.wait, Thread.sleep) Terminal: 死亡状态(线程正常/非正常结束运行)th…

CPU,内核,寄存器,缓存,RAM,ROM的知识

偷偷说一下&#xff0c;这个图片是晚上 8 点钟的太阳&#xff0c;一个骚男华为总工发给我的&#xff0c;有时间还是想出去走走很多人使用计算机&#xff0c;但是对计算机却不是很懂&#xff0c;即使是作为非常资深的码农&#xff0c;也不能做到心中有剑的地步&#xff0c;那么怎…

mft按钮设计_哈汽机组660MW超临界空冷机组ETS设计及逻辑说明

点击上方“火力发电集控运行”关注公众号&#xff0c;加微信号&#xff1a;jikonglingmi&#xff0c;备注&#xff1a;集控运行&#xff0c;拉你入集控运行技术交流群&#xff0c;共同学习、共同进步。更多学习题库&#xff0c;请进入首页菜单选择一、 基本设计思想1、既防拒动…

JVM运行参数_JVM内存模型_常用内存分析工具

JVM运行参数 常见标准参数 -showversion: 显示当前JVM版本等信息-D设置系统属性参数: /*** 测试* author regotto*/ public class JvmTest {public static void main(String[] args) {//获取系统参数String str System.getProperty("str");System.out.println(st…

2019 年入门AI算法工程师,你需要掌握什么技能?

一篇推文&#xff0c;感兴趣的同学可以了解一下&#xff0c;有需要请继续往下阅读&#xff0c;没有需要的打扰各位金主了-----人工智能与自然语言处理/计算机视觉课培训招生Artificial Intelligence ForNLP/CV Courses真实企业级项目驱动找工作拿不到offer全额退款GitHub年度活…

Java常见GC算法_垃圾收集器及内存分配_G1垃圾收集器

常见GC算法 引用计数法: 每个对象都有一个计数器, 对象被引用一次, 计数器1, 当对象引用失败一次. 计数器-1, 当对象计数器等于0, 说明对象没有被应用, 就可GC 优: 运行过程中, 可随时检查对象计数器, 进行GC, 且GC过程, 应用无需暂停, 执行速度快(单个对象GC不会影响其他对…

是应该有点兴奋剂刺激下

不知道你有没有发现一个问题&#xff0c;发现身边的很多人工资很高&#xff0c;但是好像总还是缺点什么&#xff0c;总是对生活提不起兴趣&#xff0c;似乎对任何事情都失去热情&#xff0c;每天拿着手机&#xff0c;点来点去&#xff0c;每天都在抱怨&#xff0c;每天都好像在…