74 lines
1.9 KiB
Python
74 lines
1.9 KiB
Python
#!/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))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|