# NAME

GDB::bt - Get perl backtraces from coredump files

# SYNOPSIS

   $ gdb-bt.pl core.17373
   Reading symbols from perl...
   [New LWP 17373]
   [Thread debugging using libthread_db enabled]
   Using host libthread_db library "/usr/lib/libthread_db.so.1".
   Core was generated by `rpc                                    '.
   Program terminated with signal SIGABRT, Aborted.
   #0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
       50../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
   Perl version =  32 ' '
   [0] 0x5597599303b2 "lib/Panda/XServer/RPC/Async/WClientImpl.pm":119
   [1] 0x5597599303b2 "lib/Panda/XServer/RPC/Async/WClientImpl.pm":63
   [2] 0x559757a89492 "lib/Panda/XServer/RPC/WClientImpl.pm":162
   [3] 0x559757a89492 "lib/Panda/XServer/RPC/WClientImpl.pm":106
   [4] 0x5597560d1e12 "t/03-xserver/01-rpc-async.t":35
   [5] 0x5597575113f2 "lib/Panda/Timer.pm":48
   [6] 0x559756ca0c42 "/home/b/development/crazy-panda/core-dev/t/lib/Panda/TestEnvironment.pm":192
   [7] 0x559756ca0c42 "/home/b/development/crazy-panda/core-dev/t/lib/Panda/TestEnvironment.pm":192
   [8] 0x5597560d1e12 "t/03-xserver/01-rpc-async.t":56

# DESCRIPTION

If your perl program segfaults you can easily extract `C` backtraces, however perl bactraces are
not available. Usually you can _guess_ correctly them (e.g. from logs), but that takes time
and it is error-prone. The proposed script solves at least partially solves the problem.

The script target audience is: XS-modules writers and bug-reporters (for perl core and XS-modules).

# LIMITATIONS

Currently it was tested on the following configurations:

- 5.30 (non threaded, linux)
- 5.32 (non-threaded, linux)

If it works on your perl and it is not listed here, please, let us know.

# INTERNALS

The main script is written in Python, as gdb out of the box has official Python-bindings.
To extend it, you should look a the perl sources somewhere around `pp_ctl.c / caller_cx`
and duplicate the code in the Python script. Yes, you have to expand all perl macroses,
undocumented perl internals etc., to let it work. There is no other way.

# AUTHOR

Ivan Baidakou <[email protected]>, Crazy Panda LTD

# LICENSE

You may distribute this code under the same terms as Perl itself.