ESP32 coredump 分析
1.
上次寫了一個 ESP32 入門,我想有必要再寫這篇文章,這次主要是分析 coredump 的,這就像 Android 和 Linux 系統(tǒng)的死機分析,有意思,也有難度。我們寫代碼的時候,不可避免的會遇到一些 coredump 的問題,這時候我們就要去分析 coredump 的原因,在 Linux 內(nèi)核也是一樣, coredump 主要是打印一些堆棧調(diào)用,通過看到這些堆棧調(diào)用信息,我們可以定位到問題原因。
?
網(wǎng)上有很多分析 coredump 的文章,但是清一色的都是翻譯官網(wǎng)的東西,沒有實際去測試運行過。
?
我覺得 ESP32 還有一個好處是,對于初學者真的太方便了,買個 Linux 開發(fā)板可能要幾百塊,但是買一個 ESP32 模塊的話,也就 40 塊錢,而且也是跑 Freertos 系統(tǒng)的,還有還有就是非常方便攜帶,調(diào)試燒錄供電都可以用一個 usb 線搞定,說真的,我沒有收錢宣傳,是真的適合沒有錢又喜歡入門嵌入式的同學們,但是這個只是起點,嵌入式后期我覺得一定是要學習Linux 的。
?
2.
coredump 官方文檔
https://esp-idf-zh.readthedocs.io/zh_CN/latest/api-guides/core_dump.html
?
保存出現(xiàn) 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 位置附近的上下文代碼,有了上下文代碼,作為百里挑一碼農(nóng)的你,肯定不會放過蛛絲馬跡找到 bug 所在。
?
elf 文件是我們編譯的時候生成的,我們每次編譯一次就會有不同的符號表,當然,我們分析 coredump 的時候,燒錄到設備的 bin 文件和 elf 文件要對應,要不然分析結(jié)果千壤之別。
?
3.執(zhí)行命令如下
官網(wǎng)還有另外一個命令,那個命令每次運行都出現(xiàn)錯誤,如果有知道原因的可以留言告知我,萬分感謝。
./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 的工具
???
?
?
總結(jié)
以上是生活随笔為你收集整理的ESP32 coredump 分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java面试题关于servlet_关于J
- 下一篇: 用SVM分类模型处理iris数据集