Files

41 lines
1.1 KiB
Python
Raw Permalink Normal View History

2024-03-15 11:27:52 +08:00
# SPDX-FileCopyrightText: 2024 M5Stack Technology CO LTD
#
# SPDX-License-Identifier: MIT
2024-01-10 18:33:03 +08:00
import sys
import subprocess
import re
2024-01-15 11:06:39 +08:00
2024-01-10 18:33:03 +08:00
def parse_backtrace(elf_file_path, backtrace):
2024-01-15 11:06:39 +08:00
addresses = backtrace.split(" ")
2024-01-10 18:33:03 +08:00
for address in addresses:
2024-01-15 11:06:39 +08:00
if ":" in address:
addr = address.split(":")[0] # 只需要冒号前的地址部分
2024-01-10 18:33:03 +08:00
# 构建命令
command = f"xtensa-esp32-elf-addr2line -pfiaC -e {elf_file_path} {addr}"
# 运行命令并捕获输出
2024-01-15 11:06:39 +08:00
result = subprocess.run(
command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True
)
2024-01-10 18:33:03 +08:00
# 打印结果
print(result.stdout)
# 错误处理
if result.stderr:
print("Error:", result.stderr)
2024-01-15 11:06:39 +08:00
if __name__ == "__main__":
2024-01-10 18:33:03 +08:00
if len(sys.argv) != 3:
print("Usage: python parse_backtrace.py <elf_path> <backtrace_string>")
sys.exit(1)
elf_file_path = sys.argv[1]
backtrace = sys.argv[2]
parse_backtrace(elf_file_path, backtrace)