#!/usr/bin/env python #-*- coding:UTF-8 -*- import socket from select import select import time import os import sys import threading import json import struct import binascii import time import re import fileinput def dump_addr(addr): file_asm = "./Xinc_ble_sdk_asm" cur_func = "" with open(file_asm, 'r') as fd: for line in fd: if re.match(r" \w+", line) != None: cur_func = line.strip() # if re.search("^ 0x", line) != None and re.search(addr, line) != None: print(addr, cur_func) break fd.close() def dump_addr1(addr): file_asm = "./Xinc_ble_sdk_asm1" cur_func = "" with open(file_asm, 'r') as fd: for line in fd: if re.match(r" \w+", line) != None: cur_func = line.strip() # if re.search("^ 0x", line) != None and re.search(addr, line) != None: print(addr, cur_func) break fd.close() if __name__ == "__main__": file_in = "./dump.txt" for line in fileinput.input(file_in): print(line) # 处理 PC 指针信息 if re.search("PC = ", line) != None: pc_addr = line.split("PC = ")[1].split(",")[0] #print(hex(int(pc_addr, 16))) dump_addr(hex(int(pc_addr, 16))) dump_addr1(hex(int(pc_addr, 16))) # 处理 栈信息 if re.search("^[0-9]",line) != None: #print(line) stack = line.split('=')[1].replace('\n', '').split(' ') for addr in stack: if addr == ' ' or re.search("^1", addr) == None: continue #print(addr, hex(int(addr,16)-1)) dump_addr(hex(int(addr,16)-1)) dump_addr1(hex(int(addr,16)-1))