The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Signal::StackTrace::CarpLike - install signal handler to print a Carp-like stacktrace

SYNOPSIS

    # default installs the handler on USR1
    # these have the same result.

    use Signal::StackTrace::CarpLike;
    use Signal::StackTrace::CarpLike qw( USR1 );

    # install the handler on any valid signals

    use Signal::StackTrace::CarpLike qw( HUP );
    use Signal::StackTrace::CarpLike qw( HUP USR1 USR2 );

    # this will fail: FOOBAR is not a valid
    # signal (on any system I know of at least).

    use Signal::StackTrace::CarpLike qw( FOOBAR );

    # use it from the command line
    perl -MSignal::StackTrace::CarpLike=INT hanging-test.t

DESCRIPTION

This module is a fork of Signal::StackTrace, which has a uselessly verbose output format. But its interface is perfect, hence this module, which just uses "cluck" in Carp.

This will print a stack trace to STDERR -- similar to the sigtrap module but without the core dump using simpler syntax.

The module arguemts are signals on which to print the stack trace. For normally-terminating signals (e.g., TERM, QUIT) it is proably a bad idea in production environments but would be handy for tracking down errors; for non-trapable signals (e.g., KILL) this won't do anything.

The import will croak on signal names unknown to Config.pm ( see $Config{ sig_name } ).

The stack trace looks something like:

    INT at /Users/sartak/.perl/perls/perl-5.12.3/lib/5.12.3/perl5db.pl line 3749
            eval {...} called at /Users/sartak/.perl/perls/perl-5.12.3/lib/5.12.3/perl5db.pl line 3749
            Term::ReadLine::Gnu::AU::__ANON__[/Users/sartak/.perl/perls/perl-5.12.3/lib/site_perl/5.12.3/darwin-2level/Term/ReadLine/Gnu.pm:719]('Term::ReadLine=HASH(0x10099a6e0)', '\x{1}\x{1b}[4m\x{2}  DB<1> \x{1}\x{1b}[24m\x{2}') called at /Users/sartak/.perl/perls/perl-5.12.3/lib/site_perl/5.12.3/darwin-2level/Term/ReadLine/Gnu.pm line 331
            Term::ReadLine::Gnu::readline('Term::ReadLine=HASH(0x10099a6e0)', '  DB<1> ') called at /Users/sartak/.perl/perls/perl-5.12.3/lib/5.12.3/perl5db.pl line 6494
            DB::readline('  DB<1> ') called at /Users/sartak/.perl/perls/perl-5.12.3/lib/5.12.3/perl5db.pl line 2241
            DB::DB called at -e line 1
    at /Users/sartak/.perl/perls/perl-5.12.3/lib/5.12.3/perl5db.pl line 3749
            eval {...} called at /Users/sartak/.perl/perls/perl-5.12.3/lib/5.12.3/perl5db.pl line 3749
            Term::ReadLine::Gnu::AU::__ANON__[/Users/sartak/.perl/perls/perl-5.12.3/lib/site_perl/5.12.3/darwin-2level/Term/ReadLine/Gnu.pm:719]('Term::ReadLine=HASH(0x10099a6e0)', '\x{1}\x{1b}[4m\x{2}  DB<1> \x{1}\x{1b}[24m\x{2}') called at /Users/sartak/.perl/perls/perl-5.12.3/lib/site_perl/5.12.3/darwin-2level/Term/ReadLine/Gnu.pm line 331
            Term::ReadLine::Gnu::readline('Term::ReadLine=HASH(0x10099a6e0)', '  DB<1> ') called at /Users/sartak/.perl/perls/perl-5.12.3/lib/5.12.3/perl5db.pl line 6494
            DB::readline('  DB<1> ') called at /Users/sartak/.perl/perls/perl-5.12.3/lib/5.12.3/perl5db.pl line 2241
            DB::DB called at -e line 1

KNOWN BUGS

None, yet.

SEE ALSO

perlipc

Dealing with signals in perl.

sigtrap

Trapping signals with supplied handlers, getting core dumps.

Config

$Config{ sig_name } gives the valid signal names.

AUTHOR

Shawn M Moore <sartak@gmail.com>

ORIGINAL AUTHOR

Steven Lembark <lembark@wrkhors.com> was the original author of Signal::StackTrace from which this module was forked.

LICENSE

This code is licensed under the same terms as Perl 5.8 or any later version of perl at the users preference.