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,一经查实,立即删除!

相关文章

pycharm变量存_pycharm不为人知的功能们

一、远程调试这个功能真的好用&#xff0c;现改现测参考的博客写的挺详细的&#xff0c;补充一下个人的注意事项1.要选sftp连接&#xff0c;否则连接不上(没有具体查找原因&#xff0c;sftp挺好用的就用着)&#xff0c;端口是222.Connection中的Root path指定根目录&#xff0c…

css div设置inline-block后 div顶部对齐

div{vertical-align:top}转载于:https://www.cnblogs.com/SunSong/p/6846776.html

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

最近华为的事件又上了热搜&#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;意即…

cif t t操作流程图_外贸跟单员的详细工作流程:跟单员工作流程图

&#xfeff;外贸跟单员详细工作流程外贸跟单员定义: 外贸跟单员是指在进出口业务中&#xff0c;在贸易合同签订后&#xff0c;依据合同和相关单证对货物加工、装运、保险、报检、报关、结汇等部分或全部环节进行跟踪或操作&#xff0c;协助履行贸易合同的外贸业务人员。外贸跟…

从你的全世界路过-论演员的自我修养

线程 1.概念 &#xff1a; 线程是一个程序内部的顺序控制流 2.线程与进程的区别 &#xff08;1&#xff09;每个进程都有独立的代码和数据空间&#xff08;进程上下文&#xff09;&#xff0c;进程间的切换会有较大的开销 &#xff08;2&#xff09; 线程可以看做轻量级的进程…

要有敬畏之心

最近开始周六也没有休息&#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…

子之错父之过什么意思_"子不教父之过",这句话出自哪里?什么意思?

展开全部&#xff02;子不教父之过&#xff02;这句话应该是养不教&#xff0c;父之过。意思是仅仅是供养儿62616964757a686964616fe4b893e5b19e31333431333939女吃穿&#xff0c;而不好好教育&#xff0c;是父母的过错。出自中国的传统启蒙教材《三字经》。在中国古代经典当中…

Linux之定时任务补充

定时任务两实例 例1: 每分钟打印一次自己的名字拼音全拼到“/server/log/自己的名字命名的文件”中。 [rootchengliang log]# mkdir -p /server/log/ [rootchengliang log]# echo "chensiqi" >>/server/log/chengliang [rootchengliang log]# crontab -l #time…

最近,我也要买书了

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

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

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

python selenium自动化测试面试题_selenium 自动化测试面试题及答案

1、selenium中如何判断元素是否存在&#xff1f;- isElementPresent2、selenium中hidden或者是display &#xff1d; none的元素是否可以定位到&#xff1f;- 不能3、selenium中如何保证操作元素的成功率&#xff1f;也就是说如何保证我点击的元素一定是可以点击的&#xff1f;…

跟我师兄聊天引发的思考

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

HDU 4701 Game

link&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid4701 DP真美 &#xff01; (亝 ‿ 亝) dp[pos][a][b][0/1]&#xff1a;第pos件商品即将被购买&#xff0c;Alice有a元&#xff0c; Bob有b元&#xff0c;轮到谁行动(0:Alice 1:Bob)。 打训练赛时&#xff0c;设计出…

写好一份属于自己的简历

原文出处&#xff1a;原文链接 下面是精益技术简历的47条原则&#xff1a; 版式 原则1&#xff1a;使用对齐 原则2&#xff1a;不必使用居中 原则3&#xff1a;谨慎使用粗体 原则4&#xff1a;避免不必要的折行 原则5&#xff1a;使用制表符辅助对齐 个人信息 原则6&#xff…

别忘了当初你为何出发

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

Git学习历程

Git学习历程 作为一名有理想的程序员&#xff0c;当然要会用一些高效的工具。今天来复习一下之前学过的Git的使用方法。 学习流程&#xff1a; 1、入门GitHub的文章&#xff1a;http://pan.baidu.com/s/1jHLdNZg(百度云盘)。这篇文章中把GitHub讲的很详细&#xff0c;但是在讲解…

kass中lisp文件_自动加载文件目录下的lsp、vlx和fas文件

;自动加载文件夹中的lsp,fas,vlx文件(defun loadlspfile(Folder_path / nn f1)(if Folder_path(vl-catch-all-apply(lambda ( / nn f1)(setq nn(append(xingle_GetFile Folder_path "*.lsp")(xingle_GetFile Folder_path "*.fas")(xingle_GetFile Folder_p…

写给自己的话

花一定的时间, 在某感兴趣的几个框架, 或者技术上达到一定深度, 不要浅尝辄止, 多去研究, 扩展, 理解为什么要这样做, 我应该要怎么做, 我为什么要这样做某一方向不具有深度的根本原因在于: 1. 回避问题: 总是寻求别人做好的解决方案, 这样做未尝不可, 但是也应该搞懂为什么别人…