esp32 - 在 NodeMCU 上分析 ESP32 回溯

标签 esp32 nodemcu esp-idf

我正在调试 NodeMCU Lua 固件的 dev-esp32 分支上的一些崩溃。你们的其他 NodeMCU 开发人员如何分析回溯?

在正常的 ESP32 开发期间,idf 监视器处理解码回溯。我尝试在我的 NodeMCU 构建中使用 IDF 监视器(未成功)。我也试过 https://github.com/me-no-dev/EspExceptionDecoder 但没有成功。

在我深入研究这个问题之前,我想我会检查一下其他人是如何处理它的。

下面是我尝试解码的输出类型示例。

Guru Meditation Error: Core  1 panic'ed (StoreProhibited). Exception was unhandled.
Core 1 register dump:
PC      : 0x4000c3f5  PS      : 0x00060430  A0      : 0x800ed304  A1      : 0x3ffc3fe0  
A2      : 0x80171ba1  A3      : 0x3ffc4292  A4      : 0x00000001  A5      : 0x3fe1a9a4  
A6      : 0x7ff00000  A7      : 0x000e6c6e  A8      : 0x00000000  A9      : 0x80171ba1  
A10     : 0x0000002d  A11     : 0x00000000  A12     : 0x3ffc9690  A13     : 0x00000010  
A14     : 0x00000001  A15     : 0x3ffc4640  SAR     : 0x00000004  EXCCAUSE: 0x0000001d  
EXCVADDR: 0x80171ba1  LBEG    : 0x400029ac  LEND    : 0x400029cb  LCOUNT  : 0x00000000  

ELF file SHA256: b809d167629a125c85da3f679dd782ec6df740657c8d4ef4df56d7eea784abcd

Backtrace: 0x4000c3f5:0x3ffc3fe0 0x400ed301:0x3ffc4000 0x400e2c8a:0x3ffc4030 0x400df6bd:0x3ffc4340 0x4013bfde:0x3ffc4400 0x4013dff9:0x3ffc4440 0x40137588:0x3ffc4460 0x4016ff04:0x3ffc4480 0x4013d8d7:0x3ffc44b0 0x4013ccdd:0x3ffc44f0 0x4013d9ae:0x3ffc4540 0x4013db89:0x3ffc4560 0x4013d1f5:0x3ffc4580 0x4013da96:0x3ffc4600 0x4013e6a2:0x3ffc4630 0x400d6e21:0x3ffc4660 0x40082c36:0x3ffc4690 0x40108137:0x3ffc46d0 0x40110043:0x3ffc4730 0x401100a2:0x3ffc4750 0x4011014e:0x3ffc4770 0x4010dc8e:0x3ffc4790 0x4008ec46:0x3ffc47b0

关于解码器尝试的附加信息

对于 EspExceptionDecoder 尝试,我将崩溃输出保存在名为 backtrace 的文件中。然后我按如下方式调用解码器,这会导致解析器错误(确认路径正确)。

$ shasum -a 256 ../konnected-pro/build/nodemcu-firmware/build/NodeMCU.elf 
fa399df026e014cc988df430b22c58da9a9159cea5aaca9f19f67dc67c339619  ../konnected-pro/build/nodemcu-firmware/build/NodeMCU.elf
$ ./decoder.py -e ../konnected-pro/build/nodemcu-firmware/build/NodeMCU.elf -t ~/.espressif/tools/xtensa-esp32-elf/esp-2019r2-8.2.0/xtensa-esp32-elf -p ESP32 ../backtrace 
ERROR: Parser not complete!

我在上面尝试过的 backtrace 文件具有以下内容(注意 sha 与上面的检查相匹配)。

PANIC: unprotected error in call to Lua API (/lfs/ds18b20.lua:123: failed)
E (27032) task_wdt: Task watchdog got triggered. The following tasks did not reset the watchdog in time:
E (27032) task_wdt:  - IDLE0 (CPU 0)
E (27032) task_wdt: Tasks currently running:
E (27032) task_wdt: CPU 0: main
E (27032) task_wdt: CPU 1: IDLE1
E (27032) task_wdt: Aborting.
abort() was called at PC 0x400d3708 on core 0

ELF file SHA256: fa399df026e014cc988df430b22c58da9a9159cea5aaca9f19f67dc67c339619

Backtrace: 0x40088cef:0x3ffb0a40 0x40089009:0x3ffb0a60 0x400d3708:0x3ffb0a80 0x4008273d:0x3ffb0aa0 0x4013715d:0x3ffbcde0 0x40138917:0x3ffbce00 0x4013857d:0x3ffbce20 0x40140aa1:0x3ffbce40 0x40137357:0x3ffbce60 0x400d4dfe:0x3ffbceb0 0x40138e6f:0x3ffbcee0 0x4013f1b9:0x3ffbcf20 0x40138f46:0x3ffbcf70 0x401408fd:0x3ffbcf90 0x400d5e6b:0x3ffbcfb0 0x400f9b81:0x3ffbcfd0 0x400fdc37:0x3ffbd000 0x400d27ab:0x3ffbd040

Rebooting...
ets Jun  8 2016 00:22:57

最佳答案

我建议买一个 JTAG 适配器(例如便宜的 ESP-Prog 如果您还没有的话),将它连接到您的电路板上 per instructions并使用 gdb 进行调试。设置起来有点麻烦,但没有什么可以替代实际的调试工作流程。

关于esp32 - 在 NodeMCU 上分析 ESP32 回溯,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65630477/

相关文章:

azure - 使用 MQTT 通过 Websockets(端口 443)而不是端口 8883 将 ESP32 连接到 Azure Iot Hub

swift - BLE 在 ESP32 和 Iphone 之间发送字符串

c - 如何生成唯一的文件名?

arduino - 无法浏览在esp8266中创建的Mdns服务

lua - 多层 JSON 的 cjson.decode()

c - ESP-IDF 框架中的链接器错误(未定义引用)

spi - 为什么带有 ESP-IDF 的 SPI 与 ESP-IDF Arduino 端口 (AS5048A) 的工作方式不同?

javascript - ESP32 上的 Web 服务器 : How to update and display sensor values from the server automatically?

c - 在esp32中使用深度 sleep 时void setup()代码是否被清除

embedded - vTaskCreatePinnedToCore() 的行为不符合预期