From 685f2c97ff4b3c76b437a43be86d1dfdf6cb33e3 Mon Sep 17 00:00:00 2001 From: david gauchard Date: Sun, 31 Mar 2024 18:24:25 +0200 Subject: [PATCH] decoder.py: allowing to use it live (#9108) - avoid ctx repetition and hide some useless fw debug lines - hide "DECODE IT" - immediately print stack at closing marker - check for tool executable at startup live command line example > pyserial-miniterm /dev/ttyUSB0 115200 | \ path/to/esp8266/Arduino/tools/decoder.py \ --tool addr2line \ --toolchain-path path/to/esp8266/Arduino/tools/xtensa-lx106-elf/bin \ path/to/build.elf --- tools/decoder.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/tools/decoder.py b/tools/decoder.py index 005569364..b1f170676 100755 --- a/tools/decoder.py +++ b/tools/decoder.py @@ -10,6 +10,7 @@ import argparse import sys import re import subprocess +import shutil # https://github.com/me-no-dev/EspExceptionDecoder/blob/349d17e4c9896306e2c00b4932be3ba510cad208/src/EspExceptionDecoder.java#L59-L90 EXCEPTION_CODES = ( @@ -104,7 +105,10 @@ def decode_lines(format_addresses, elf, lines): STACK_LINE_RE = re.compile(r"^[0-9a-f]{8}:\s\s+") + IGNORE_FIRMWARE_RE = re.compile(r"^(epc1=0x........, |Fatal exception )") + CUT_HERE_STRING = "CUT HERE FOR EXCEPTION DECODER" + DECODE_IT = "DECODE IT" EXCEPTION_STRING = "Exception (" EPC_STRING = "epc1=" @@ -132,6 +136,8 @@ def decode_lines(format_addresses, elf, lines): stack_addresses = print_all_addresses(stack_addresses) last_stack = line.strip() # 3fffffb0: feefeffe feefeffe 3ffe85d8 401004ed + elif IGNORE_FIRMWARE_RE.match(line): + continue elif in_stack and STACK_LINE_RE.match(line): _, addrs = line.split(":") addrs = ANY_ADDR_RE.findall(addrs) @@ -163,8 +169,10 @@ def decode_lines(format_addresses, elf, lines): in_stack = True # ignore elif "<<