MCPcopy Create free account
hub / github.com/FastLED/FastLED / main

Function main

ci/decode_esp32_backtrace.py:204–252  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

202
203
204def main():
205 import argparse
206
207 parser = argparse.ArgumentParser(
208 description="Decode ESP32 crash dumps using addr2line",
209 formatter_class=argparse.RawDescriptionHelpFormatter,
210 epilog="""
211Examples:
212 %(prog)s firmware.elf 0x42002a3c 0x42001234
213 %(prog)s firmware.elf --build-info build_info.json 0x42002a3c
214 cat crash.log | %(prog)s firmware.elf --build-info build_info.json
215 """,
216 )
217 parser.add_argument("elf_file", type=Path, help="Path to firmware.elf file")
218 parser.add_argument(
219 "--build-info",
220 type=Path,
221 help="Path to build_info.json for finding addr2line tool",
222 )
223 parser.add_argument(
224 "addresses",
225 nargs="*",
226 help="Addresses to decode (or pipe crash log to stdin)",
227 )
228
229 args = parser.parse_args()
230
231 # Check if addresses provided on command line
232 if args.addresses:
233 decode_addresses(args.elf_file, args.addresses, args.build_info)
234 else:
235 # Read from stdin
236 if sys.stdin.isatty():
237 print("Error: No addresses provided and stdin is empty", file=sys.stderr)
238 print(
239 "Provide addresses as arguments or pipe crash log to stdin",
240 file=sys.stderr,
241 )
242 sys.exit(1)
243
244 log = sys.stdin.read()
245 addresses = extract_addresses_from_crash_log(log)
246
247 if not addresses:
248 print("Error: No addresses found in crash log", file=sys.stderr)
249 sys.exit(1)
250
251 print(f"Found {len(addresses)} addresses to decode")
252 decode_addresses(args.elf_file, addresses, args.build_info)
253
254
255if __name__ == "__main__":

Callers 1

Calls 5

decode_addressesFunction · 0.85
parse_argsMethod · 0.80
printFunction · 0.50
readMethod · 0.45

Tested by

no test coverage detected