Signal::StackTrace::CarpLike - install signal handler to print a Carp-like stacktrace
# 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
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
None, yet.
Dealing with signals in perl.
Trapping signals with supplied handlers, getting core dumps.
$Config{ sig_name } gives the valid signal names.
Shawn M Moore <sartak@gmail.com>
Steven Lembark <lembark@wrkhors.com> was the original author of Signal::StackTrace from which this module was forked.
This code is licensed under the same terms as Perl 5.8 or any later version of perl at the users preference.
To install Signal::StackTrace::CarpLike, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Signal::StackTrace::CarpLike
CPAN shell
perl -MCPAN -e shell install Signal::StackTrace::CarpLike
For more information on module installation, please visit the detailed CPAN module installation guide.