Debugging and crash analysis techniques
Posted: Fri Mar 26, 2021 3:54 am
New to micropython and loving it so far.
I come from a C world for embedded work and have been noodling in Python for about a year for desktop utilities. As I have made a few projects in microPython on ESP32 (SparkFun ESP32 Thing) - I have discovered that I have no idea how to best learn and approach low-ish debugging that crashes the system.
Initially, I was going to post something about the specific issue I am having, but then I decided it would be more helpful to learn how to figure it out on my own. The crashy code at unpredictable times gives me this....
It happens at various places in the code, and totally unpredictable as far as I can tell. Using interrupts and timers along with MQQT module called umqttsimple. Trying to figure out how to best understand the exception output and perhaps some reading or video resources to better educate myself on the lower levels of micropython debugging.
Hoping to eventually use this platform for a commercial product if I can get the stability I have grown accustomed to when designing firmware with C.
Looking forward to any suggestions for good learning resources.
I come from a C world for embedded work and have been noodling in Python for about a year for desktop utilities. As I have made a few projects in microPython on ESP32 (SparkFun ESP32 Thing) - I have discovered that I have no idea how to best learn and approach low-ish debugging that crashes the system.
Initially, I was going to post something about the specific issue I am having, but then I decided it would be more helpful to learn how to figure it out on my own. The crashy code at unpredictable times gives me this....
Code: Select all
Guru Meditation Error: Core 0 panic'ed (LoadProhibited)
. Exception was unhandled.
Core 0 register dump:
PC : 0x400dd39a PS : 0x00060d30 A0 : 0x800dbe3c A1 : 0x3ffb6480
A2 : 0x00000000 A3 : 0x3ffb6a64 A4 : 0x00000fff A5 : 0xffffffff
A6 : 0x00000001 A7 : 0x00000e82 A8 : 0x3f40a064 A9 : 0x3ffb6470
A10 : 0x00000000 A11 : 0x00000004 A12 : 0x00000000 A13 : 0x3ffbf774
A14 : 0x3ffbf788 A15 : 0x3ffbf788 SAR : 0x00000006 EXCCAUSE: 0x0000001c
EXCVADDR: 0x00000000 LBEG : 0x4000c2e0 LEND : 0x4000c2f6 LCOUNT : 0xffffffff
Backtrace: 0x400dd39a:0x3ffb6480 0x400dbe39:0x3ffb64a0 0x400dbe8d:0x3ffb64c0 0x400dcd84:0x3ffb64f0 0x4008dda5:0x3ffb6570 0x400e9305:0x3ffb6590 0x400dfbe8:0x3ffb6630 0x400dbe49:0x3ffb6660 0x400dbeb1:0x3ffb6680 0x400e8f0d:0x3ffb66a0 0x400dfbe8:0x3ffb6740 0x400dbe49:0x3ffb67b0 0x400dbeb1:0x3ffb67d0 0x400e8f0d:0x3ffb67f0 0x400dfbe8:0x3ffb6890 0x400dbe49:0x3ffb68c0 0x400dbe76:0x3ffb68e0 0x400f872a:0x3ffb6900 0x400f8981:0x3ffb69a0 0x400ef907:0x3ffb69c0
Rebooting...
Hoping to eventually use this platform for a commercial product if I can get the stability I have grown accustomed to when designing firmware with C.
Looking forward to any suggestions for good learning resources.