mirror of
https://github.com/esp8266/Arduino.git
synced 2025-04-19 23:22:16 +03:00
Custom manifest for @PlatformIO which instructs PIO Build System to do not archive library's object files. See - https://github.com/esp8266/Arduino/pull/3321#issuecomment-319386749 - http://docs.platformio.org/en/latest/librarymanager/config.html#libarchive
Using GDB stub
Add
#include <GDBStub.h>
to the sketchUpload the sketch
Redirect serial port to TCP port:
tcp_serial_redirect.py -p /dev/tty.SLAB_USBtoUART -b 115200 --spy -P 9980 --rts=0 --dtr=0
Change port and baud rate as necessary. This command requires python and pyserial.
Observe serial output:
nc localhost 9980
Once crash happens, close nc and start gdb:
xtensa-lx106-elf-gdb /path/to/Sketch.cpp.elf -ex "target remote :9980"
Or, using the provided gdbcmds file:
xtensa-lx106-elf-gdb /path/to/Sketch.cpp.elf -x gdbcmds
Use gdb to inspect program state at the point of an exception.
Tips and tricks
Upon including GDBStub.h in the sketch, the target is automatically halted when software WDT fires, with
*((int*)0) = 0;
at the top of
__wrap_system_restart_local
in core_esp8266_postmortem.c.
License
Espressif MIT License. See License file.