gen_backtrace.py 937 B

123456789101112131415161718192021222324252627282930313233343536
  1. #!/usr/bin/env python
  2. import sys, os, env_setup, addr2line
  3. if len(sys.argv) > 1:
  4. if sys.argv[1] == '-':
  5. data = sys.stdin.readlines()
  6. else:
  7. data = file(sys.argv[1]).xreadlines()
  8. else:
  9. data = file('debug_backtrace.out').xreadlines()
  10. objname = data.next().strip()
  11. marker = long(data.next())
  12. backtrace = data.next().split()
  13. message = data.next()
  14. if objname == 'sniper':
  15. bin = os.path.join(env_setup.sim_root(), 'lib', 'sniper')
  16. elif objname == 'pin_sim.so':
  17. bin = os.path.join(env_setup.sim_root(), 'lib', 'pin_sim.so')
  18. elif objname == 'sift_recorder':
  19. bin = os.path.join(env_setup.sim_root(), 'sift', 'recorder', 'sift_recorder')
  20. else:
  21. print >> sys.stderr, 'Unknown object name', objname
  22. a2l = addr2line.Addr2Line(bin, marker)
  23. print '-'*60
  24. print message
  25. print 'Backtrace:'
  26. for addr in backtrace:
  27. (file, function, line) = a2l.addr2line(addr)
  28. print ' ', ':'.join((file, function, line)).strip()
  29. print '-'*60