Skip to content

Commit 84a087f

Browse files
committed
Only decode instruction address in the stacktrace
1 parent d9fb31c commit 84a087f

File tree

1 file changed

+12
-13
lines changed

1 file changed

+12
-13
lines changed

decoder.py

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -191,15 +191,16 @@ def _sanitize_addr(self, addr):
191191

192192
return f"0x{addr:0>8}"
193193

194-
def resolve_addr(self, addr, only_found=False, full=False):
194+
def is_instruction_addr(self, addr):
195+
# instructions are generally mapped at 0x40XXXXXXh, see
196+
# https://github.com/esp8266/esp8266-wiki/wiki/Memory-Map
197+
return self._sanitize_addr(addr).startswith("0x40")
198+
199+
def resolve_addr(self, addr):
195200
addr = self._sanitize_addr(addr)
196201
if addr in self._address_map:
197202
return f"{addr}: {self._address_map[addr]}"
198-
199-
if full:
200-
return f"[DATA (0x{addr})]"
201-
202-
return addr if not only_found else None
203+
return addr
203204

204205

205206
def print_addr(name, value, resolver):
@@ -211,17 +212,16 @@ def print_stack_full(lines, resolver):
211212
print("stack:")
212213
for line in lines:
213214
print(f"{line.offset}:")
214-
for content in line.content:
215-
print(f" {resolver.resolve_addr(content, full=True)}")
215+
for addr in line.content:
216+
print(f" {resolver.resolve_addr(addr)}")
216217

217218

218219
def print_stack(lines, resolver):
219220
print("stack:")
220221
for line in lines:
221-
for content in line.content:
222-
out = resolver.resolve_addr(content, only_found=True)
223-
if out:
224-
print(out)
222+
for addr in line.content:
223+
if resolver.is_instruction_addr(addr):
224+
print(resolver.resolve_addr(addr))
225225

226226

227227
def print_result(parser, resolver, full=True):
@@ -293,7 +293,6 @@ def parse_args():
293293
parser.add_argument("-e", "--elf", help="path to ELF file", required=True)
294294
parser.add_argument("-f", "--full", help="print full stack dump", action="store_true")
295295
parser.add_argument("file", help="file to read exception data from ('-' for stdin)", default="-")
296-
297296
return parser.parse_args()
298297

299298

0 commit comments

Comments
 (0)