|
本帖最后由 icoyool 于 2021-6-22 10:32 编辑
原理利用自带命令 xtensa-esp32-elf-addr2line -e
- 输入①: xtensa-esp32-elf-addr2line 命令地址 (everything搜索一下就有, 我偷懒了, 直接加到系统path里面了
- 输入②: 项目elf文件路径
- 输入③: Backtrace文本
复制代码
虽然没有大用, 唯一的好处是下次找故障的时候, 不用手忙脚乱的重新百度
- import sys
- import os
- from pathlib import Path
- import re
- print("START:")
- path_lin = "xtensa-esp32-elf-addr2line -e "
- path_elf = "E:\\WorkPlace\\pio\EC61\\.pio\\build\\esp-wrover-kit\\firmware.elf"
- # err_str = "Backtrace: 0x400d4194:0x3ffe2380 0x400d41f7:0x3ffe23a0 0x400d61a3:0x3ffe23c0 0x40089c82:0x3ffe23e0"
- err_str = "Backtrace: 0x401a32d8:0x3ffb1f10 0x400d69e3:0x3ffb1f30 0x400d1f96:0x3ffb1f50 0x400d62eb:0x3ffb1f70 0x400d6304:0x3ffb1f90 0x400fe89d:0x3ffb1fb0 0x40089c82:0x3ffb1fd0"
- find = re.findall(r"0x4(.+?):", err_str)
- for sss in find:
- addr = " 0x4"+sss
- os.system(path_lin + path_elf+addr)
- print("END")
复制代码
输出示例:
START:
/home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/vfs/vfs_uart.c:900
E:\WorkPlace\pio\EC61/.pio\libdeps\esp-wrover-kit\CLI/CLI.cpp:398
??:?
E:\WorkPlace\pio\EC61/src/http_cgi_wr.cpp:618
E:\WorkPlace\pio\EC61/src/http_cgi_wr.cpp:622
C:\users\coyool\.platformio\packages\framework-arduinoespressif32\cores\esp32/esp32-hal-i2c.c:466
/home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/queue.c:2038
END
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
阿莫论坛才是最爱国的,关心国家的经济、社会的发展、担心国家被别国牵连卷入战争、知道珍惜来之不易的和平发展,知道师夷之长,关注世界的先进文化与技术,也探讨中国文化的博大精深,也懂得警惕民粹主义的祸国殃民等等等等,无不是爱国忧民的表现。(坛友:tianxian)
|