---
name: "Devel::bt"
section: "3pm"
platform: "linux"
package: "libdevel-bt-perl"
version: "0.06-4+b6"
release: "Debian 11 (Bullseye)"
platforms: ["linux"]
url: "https://new.carta.tech/Devel::bt"
---

# Devel::bt(3pm)

Automatic gdb backtraces on errors

## 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
```
