docker-offlineimap/offlineimap/utils/stacktrace.py

27 lines
779 B
Python
Raw Normal View History

"""
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")