mirror of
https://github.com/esp8266/Arduino.git
synced 2025-04-22 21:23:07 +03:00
- Move GDB stub hooks into a separate file, provide header for it - Use syscall instruction raise user mode exception - Remove unused code in postmortem.c fixup fixup
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.