1234567891011121314151617181920212223242526 |
- """
- Copyright 2013 Eygene A. Ryabinkin
- Functions to perform stack tracing (for multithreaded programs
- as well as for single-threaded ones).
- """
- import sys
- import threading
- import traceback
- def dump(out):
- """ Dumps current stack trace into I/O object 'out' """
- id2name = {}
- for th_en in threading.enumerate():
- id2name[th_en.ident] = th_en.name
- count = 0
- for i, stack in list(sys._current_frames().items()):
- out.write("\n# Thread #%d (id=%d), %s\n" % (count, i, id2name[i]))
- count = count + 1
- for file, lno, name, line in traceback.extract_stack(stack):
- out.write('File: "%s", line %d, in %s' % (file, lno, name))
- if line:
- out.write(" %s" % (line.strip()))
- out.write("\n")
|