print python stack trace without exception being raised print python stack trace without exception being raised python python

print python stack trace without exception being raised


traceback.print_stack():

>>> def f():...   def g():...     traceback.print_stack()...   g()...>>> f()  File "<stdin>", line 1, in <module>  File "<stdin>", line 4, in f  File "<stdin>", line 3, in g

Edit: You can also use extract_stack, take a slice (e.g. stack[5:] for exclude the first 5 levels) and use format_list to get a print-ready stacktrace ('\n'.join(traceback.format_list(...)))


Instead of printing to stdout, if you need a string to pass to a logger you can use:

''.join(traceback.format_stack())

Note, that traceback.format_stack() returns the stacktrace as a formatted list of strings, so you can slice it anyway you want. To get the last few elements of the stacktrace you could do:

''.join(traceback.format_stack()[-N:])

Where N is the number of levels you are interested in.