# -*- Mode: Python -*- import struct # see regs = ( 'fs', 'es', 'ds', 'edi', 'esi', 'ebp', 'isp', 'ebx', 'edx', 'ecx', 'eax', 'trapno', 'err', 'eip', 'cs', 'eflags', 'esp', 'ss', 'gs', ) struct_format = '@' + ('I' * len(regs)) struct_size = struct.calcsize (struct_format) def read_regs (pid): import os fd = os.open ('/proc/%s/regs' % pid, os.O_RDONLY) data = os.read (fd, struct_size) reg_values = struct.unpack (struct_format, data) d = {} for i in range (len (regs)): d[regs[i]] = reg_values[i] return d if __name__ == '__main__': import pprint for k,v in read_regs ('curproc').items(): print '%8s %08x' % (k, v)