Tipper is a small Python utility for dumping stack tracebacks of running Python processes.
Included is a module that, when imported, installs a signal handler for SIGUSR1. Running kill -SIGUSR1 [pid] will cause the process to dump the current stack trace of each thread to $TMPDIR/tipper-[unix timestamp]-[parent pid]-[pid].log.
Tipper can also be used as Django application, though it has no dependencies on Django itself.
Python 2.5 or newer is required. Python 3.x is also supported.
Usage:
To take Tipper for a test drive, first install Tipper:
pip install tipper
Set up a Python process to inspect:
cat > test.py sys.stdout.write('%s\n' % os.getpid())
> while True:
> time.sleep(1)
> EOF
$ python test.py
945
And send SIGUSR1 to it:
kill -SIGUSR1 945
You should end up with a file in $TMPDIR that looks like the following:
cat "$TMPDIR/tipper-1292830152.19-681-945.log"
Date: 2010-12-20 18:29:12.192733
Parent process ID: 681
Process ID: 945
Traceback (thread 140048470763264):
File "test.py", line 4, in < module >
time.sleep(1)
Arguments: < module >()
Local variables:
{'__builtins__': < module '__builtin__' (built-in) >,
'__doc__': None,
'__file__': 'test.py',
'__name__': '__main__',
'__package__': None,
'os': < module 'os' from '/usr/lib/python2.6/os.pyc' >,
'sys': < module 'sys' (built-in) >,
'time': < module 'time' (built-in) >,
'tipper': < module 'tipper' from '/usr/local/lib/python2.6/dist-packages/tipper/__init__.py' >}
To get a briefer overview of the log, you can use grep:
grep -v '^ \|^$' "$TMPDIR/tipper-1292830152.19-681-945.log"
Date: 2010-12-20 18:29:12.192733
Parent process ID: 681
Process ID: 945
Traceback (thread 140048470763264):
File "test.py", line 4, in < module >
time.sleep(1)
Product's homepage
Requirements:
· Python