File: stacktrace.py

package info (click to toggle)
offlineimap3 0.0~git20210225.1e7ef9e%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 1,328 kB
  • sloc: python: 7,974; sh: 548; makefile: 81
file content (26 lines) | stat: -rw-r--r-- 779 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
"""
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")