NAME
Devel::bt - Automatic gdb backtraces on errors
SYNOPSIS
$ perl -d:bt -MB -e'(bless \(my $o = 0), q{B::SV})->REFCNT'
#0 0x00007f9c3215ab0e in __libc_waitpid (pid=<value optimized out>, stat_loc=0x7fff4c5ffbe8, options=<value optimized out>) at ../sysdeps/unix/sysv/linux/waitpid.c:32
#1 0x00007f9c319168c1 in backtrace () at bt.xs:129
#2 0x00007f9c319168ec in sighandler (sig=11) at bt.xs:135
#3 <signal handler called>
#4 0x00007f9c316c8ccf in XS_B__SV_REFCNT (my_perl=0x151c010, cv=0x177bfb8) at B.c:3360
#5 0x000000000057d5a0 in Perl_pp_entersub (my_perl=0x151c010) at pp_hot.c:2882
#6 0x000000000051a331 in Perl_runops_debug (my_perl=0x151c010) at dump.c:2049
#7 0x0000000000454ab0 in S_run_body (my_perl=0x151c010, oldscope=1) at perl.c:2308
#8 0x0000000000453d78 in perl_run (my_perl=0x151c010) at perl.c:2233
#9 0x00000000004230fd in main (argc=6, argv=0x7fff4c600788, env=0x7fff4c6007c0) at perlmain.c:117
DESCRIPTION
This module, when enabled, registers a handler for certain types of fatal errors, like segmentation faults, and, once such an error occurs, prints a debugger backtrace to standard output before exiting the program.
It is intended to be used to debug crashes in situations where running the failing program directly under a debugger is not possible, for example when trying to get more information from cpantesters or from users unfamiliar with gdb.
HOW IT WORKS
When being imported, a signal handler for the following signals is registered:
SIGILL
SIGFPE
SIGBUS
SIGSEGV
SIGTRAP
SIGABRT
SIGQUIT
Once the program causes an error that results in one of the above signals being sent to it, the signal handler will be called, and fork off a process running gdb
and generating a backtrace of the running program, which will then be printed to standard output.
ACKNOWLEDGEMENTS
This software is based on parts of glib
, which is written by:
Peter Mattis <petm@xcf.berkeley.edu>
Spencer Kimball <spencer@xcf.berkeley.edu>
Josh MacDonald <jmacd@xcf.berkeley.edu>
Shawn T. Amundson <amundson@gimp.org>
Jeff Garzik <jgarzik@pobox.com>
Raja R Harinath <harinath@cs.umn.edu>
Tim Janik <timj@gtk.org>
Elliot Lee <sopwith@redhat.com>
Tor Lillqvist <tml@iki.fi>
Paolo Molaro <lupus@debian.org>
Havoc Pennington <hp@pobox.com>
Manish Singh <yosh@gimp.org>
Owen Taylor <otaylor@gtk.org>
Sebastian Wilhelmi <wilhelmi@ira.uka.de>
and others
glib
is licensed under The GNU Lesser General Public License, Version 2.
AUTHOR
Florian Ragwitz <rafl@debian.org>
COPYRIGHT AND LICENSE
This software is Copyright (c) 2012 by Florian Ragwitz.
This is free software, licensed under:
The GNU Lesser General Public License, Version 2.1, February 1999