借助EspExceptionDecoder工具分析定位esp8266或esp32异常问题
esp开发过程中,难免会出现异常跑死情况,然后就打印stack回调,一大堆数字,分析定位问题很是困难头大。这时候可以借助EspExceptionDecoder工具帮助分析。arduino,vscode platformIO项目,只要有ELF文件即可分析。
下边将以一个例子一步一步,交大家使用。
问题出现Exception stack
--------------- CUT HERE FOR EXCEPTION DECODER ---------------
Exception (3):
epc1=0x40106dbe epc2=0x00000000 epc3=0x40101415 excvaddr=0x400115d4 depc=0x00000000
>>>stack>>>
ctx: cont
sp: 3ffffbb0 end: 3fffffc0 offset: 0190
3ffffd40: 401004aa 00000001 3fff1ca4 40256644
3ffffd50: 000000d7 000000d7 3ffe8678 40100b0f
3ffffd60: 3ffffe50 3fff1ccb 00000245 3fff031c
3ffffd70: 00000012 00000020 3fff1c94 40100cee
3ffffd80: 3ffffe30 4025aa50 3ffffe30 40100698
3ffffd90: 00000012 402566b7 3ffffe30 40256723
3ffffda0: 3fff1c94 4025674c 3fff0a78 00000000
3ffffdb0: 4020c7b7 00000000 3fff033c 4020c707
3ffffdc0: 676e616c 746f6174 00686365 40100d50
3ffffdd0: 00000000 00000018 3ffe9318 402182e6
3ffffde0: 676e616c 746f6174 40686365 32383036
3ffffdf0: 00003232 00000018 3ffe932f 3fff031c
3ffffe00: 3fff033c 00000020 3ffffee0 40216e79
3ffffe10: 00000000 3fff1c94 00000015 00000003
3ffffe20: 5d73b000 0064a23b 00000020 40100d18
3ffffe30: 676e616c 746f6174 00686365 40100d50
3ffffe40: 00000000 00000018 3ffe9318 402182e6
3ffffe50: 676e616c 746f6174 40686365 32383036
3ffffe60: 00003232 00000018 3ffe932f 3fff031c
3ffffe70: 3fff033c 00000020 3ffffee0 40216e79
3ffffe80: 00000000 3fff1c94 00000015 00000004
3ffffe90: 00000100 0000018f 3ffe8681 00000002
3ffffea0: 00000000 3fff0a70 00000001 00000004
3ffffeb0: 3fff0bb0 00000020 3fff2254 3fff031c
3ffffec0: 3fff0bb0 3fff0a70 00000001 4020c834
3ffffed0: 00000001 3fff0a70 00000001 402073f1
3ffffee0: 00000000 0012001f 00000000 00000000
3ffffef0: 000b000f 00000000 3fffff00 3fff06b0 <
3fffff00: 00000064 00000001 4021acb4 00000004
3fffff10: 00000001 00000001 00000000 402075fb
3fffff20: 4024f491 00186a00 3fff0bb0 4021a84c
3fffff30: 4021a860 3dcccccd 3fff06b0 4020785c
3fffff40: 00000000 00000000 00000000 4021a84c
3fffff50: 4021a860 3fff06b0 3fff0bb0 4020aceb
3fffff60: 00000000 00000000 00000000 4021a84c
3fffff70: 00000000 0010001f 00000000 feefeffe
3fffff80: 00000000 feefeffe feefeffe feefeffe
3fffff90: feefeffe feefeffe feefeffe 3fff0d78
3fffffa0: 3fffdad0 00000000 3fff0d64 40218360
3fffffb0: feefeffe feefeffe 3ffe8674 401003a1
<<<stack<<<
--------------- CUT HERE FOR EXCEPTION DECODER ---------------
EspExceptionDecoder安装
下载
github下载地址(需要科学上网):https://github.com/me-no-dev/EspExceptionDecoder
csdn下载地址: https://download.csdn.net/download/a554521655/87732857
安装
前提需要安装Arduino ide,没安装的请自行安装;因为EspExceptionDecoder是它的一个工具插件,使用需要借助Arduino
将EspExceptionDecoder-2.0.3.zip解压后,将里边的EspExceptionDecoder文件夹复制到Arduino安装目录的tools下
我这里路径是C:\Program Files (x86)\Arduino\tools
使用
启动arduino ide,依次点击 工具>> Esp Exception Decoder , 然后弹窗选择Select ELF文件,之后在弹出Exception Decoder对话框中,将异常log粘贴进入即可获取对应可读的异常信息
可以清楚的看出Exception (3)引起的原因是:
Exception 3: LoadStoreError: Processor internal physical address or data error during load or store
PC: 0x40106dbe
EXCVADDR: 0x400115d4
Decoding stack results