Skip to main content

visual stack trace for python

utilities for debugging of python scripts. prints stack backtraces that look similar to gdb stacktrace (gdb commands bt and bt full); can be used instead of traceback.

Written by Michael Moser (c) 2015

this project on pypi link

Functions

die(*msg)
    receives a variable number of arguments; prints each argument (with pprint) to standard error stream, 
    shows a detailed stack trace (also to standard error, see print_stack_ex, does not follow objects (follow_objects = 0); 
    exit program with error (status 1)
    this is similar to die built in function in perl

die2(*msg)
    receives a variable number of arguments; prints each argument (with pprint) to standard error stream, 
    shows a detailed stack trace (also to standard error, see print_stack_ex, does follow objects (follow_objects = 1); 
    exit program with error (status 1)
    this is similar to die built in function in perl

print_exception_ex(follow_objects=0, file=None)
        prints an exception with more detailed stack trace, is used as follows:
        the function is similar to traceback.print_exception , just with more detailed stack trace

    import pd

    try:
       <python code>
    except BaseException:           
	pd.print_exception_ex()


	    parameters:

	    follow_objects - if not 0 then representation of object values is printed 
	    Please note that follow_objects=1 can generate a lot of output, and can take a lot of time. (default 0)

	    file -  print to file (default value None - print to standard error stream)

	    example stack trace:

    Exception: got it

    #1  def kuku2(self = {'a': 42, 'b': [1, 2, 3, 4]}, depth = 1) at test_pd.py:29
    Calls next frame at:
	    raise Exception('got it') at: test_pd.py:29

    #2  def kuku2(self = {'a': 42, 'b': [1, 2, 3, 4]}, depth = 2) at test_pd.py:28
    Calls next frame at:
	    kuku2( depth - 1 ) at: test_pd.py:28

    #3  def kuku2(self = {'a': 42, 'b': [1, 2, 3, 4]}, depth = 3) at test_pd.py:28
    Calls next frame at:
	    kuku2( depth - 1 ) at: test_pd.py:28

    #4  def kuku2(self = {'a': 42, 'b': [1, 2, 3, 4]}, depth = 4) at test_pd.py:28
    Calls next frame at:
	    kuku2( depth - 1 ) at: test_pd.py:28

    #5  def kuku2(self = {'a': 42, 'b': [1, 2, 3, 4]}, depth = 5) at test_pd.py:28
    Calls next frame at:
	    kuku2( depth - 1 ) at: test_pd.py:28

    #6  def kuku2(self = {'a': 42, 'b': [1, 2, 3, 4]}, depth = 6) at test_pd.py:28
    Calls next frame at:
	    kuku2( depth - 1 ) at: test_pd.py:28

    #7  def main() at test_pd.py:44
    Local variables:
    n = {'a': 42, 'b': [1, 2, 3, 4]}
    Calls next frame at:
	    pd.print_exception_ex( follow_objects = 1 ) at: test_pd.py:44


print_stack_ex(skipframes=0, follow_objects=0, file=None, frame=None)
	print stack trace from an arbitrary point in the program;
        the function is similar to traceback.print_stack , just with more detailed stack trace

        the stack trace includes function names, values of parameters and values of local variables. i find it easier to debug with this stack trace.

        parameters:
        skipframes - skip a number of frames if is not 0 (default 0)

        follow_objects - if not 0 then representation of object values is printed 
        Please note that follow_objects=1 can generate a lot of output, and can take a lot of time. (default 0)

        file -  print to file (default value None - print to standard error stream)

        frame - specify a start frame (default None - show from calling function; deepest frame on top marked with #1)

        this function is similar to traceback.print_stack , just with more detailed stack trace.

        works for python 2.7, should work for other versions as well

        example stack trace:

    #1 def fact(n = 1) at test_pd.py:10
    Local variables:
    loc 2
    loc2 [0]
    Calls next frame at:
	    pd.print_stack_ex() at: test_pd.py:10

    #2 def fact(n = 2) at test_pd.py:8
    Local variables:
    loc 4
    loc2 [0, 1]
    Calls next frame at:
	    return n * fact( n - 1 ) at: test_pd.py:8

    #3 def fact(n = 3) at test_pd.py:8
    Local variables:
    loc 6
    loc2 [0, 1, 2]
    Calls next frame at:
	    return n * fact( n - 1 ) at: test_pd.py:8

    #4 def fact(n = 4) at test_pd.py:8
    Local variables:
    loc 8
    loc2 [0, 1, 2, 3]
    Calls next frame at:
	    return n * fact( n - 1 ) at: test_pd.py:8

    #5 def main() at test_pd.py:36
    Local variables:
    Calls next frame at:
	    print fact(4) at: test_pd.py:36

    #6 def <module>() at test_pd.py:53
    Calls next frame at:
	    main() at: test_pd.py:53

Metadata

Release files for pd 0.0.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pd 0.0.4
File Size Uploaded
pd-0.0.4.tar.gz 5.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pd 0.0.4
File Interpreter ABI Platform
pd-0.0.4-py3-none-any.whl Python 3 none any Details

Total release size: 12.1 kB

Release files / pd-0.0.4.tar.gz

Download URL pd-0.0.4.tar.gz
Size 5.6 kB
Tags Source
SHA-256 checksum
How to use checksums
46f21dd5854ee7eb4397daa43191662f787ccf4cfe78e2472564bf9ce7e7614b
BLAKE2b-256 checksum
How to use checksums
064b8fffdc88c8f2d9e9b1727b99f1c6da7a10b9726f227fdb71270e7adc057c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.2 importlib_metadata/4.6.4 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.1 CPython/3.9.6

Release files / pd-0.0.4-py3-none-any.whl

Download URL pd-0.0.4-py3-none-any.whl
Size 6.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1658b04e2889abf7bb4590f6126ed618bdae474f5f9111872a446dbecd0543ef
BLAKE2b-256 checksum
How to use checksums
595144e05bdb37666f2c003e4ee20f5032119b5b353b4148b56d14c2c0ee826b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.2 importlib_metadata/4.6.4 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.1 CPython/3.9.6

Release history Release notifications | RSS feed

This release

0.0.4 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page