import subprocess import os class AddrResolver: def __init__(self, path): self.path = path self.cache = {} def get(self, addr): if addr not in self.cache: s = subprocess.check_output( "i686-elf-addr2line --demangle -fsp -e " + self.path + " " + hex(addr), shell=True) s = s.decode("ascii") self.cache[addr] = s.split(" ")[0] return self.cache[addr]