use CGI::Carp qw( fatalsToBrowser set_message ); BEGIN { my %TRACE_COLORS = ( subroutine => 'blue', args => 'red', file => 'blue', line => 'green', ); my $VERBOSE = 1; sub print_stack_trace { my $msg = shift; use Devel::StackTrace; print "
$msg\n"; print "
\n);
my $trace = Devel::StackTrace->new();
while( my $frame = $trace->next_frame() ) {
print qq();
print $frame->subroutine;
print qq#(#;
if($VERBOSE) {
print qq();
use Data::Dumper 'Dumper';
print Dumper(+($frame->args));
print qq();
}
else {
print join ', ',
map {
qq(').
$_ .
qq(')
} $frame->args;
}
print qq#)\n\t called at #;
print qq();
print $frame->filename;
print qq( );
print qq(line );
print qq();
print $frame->line;
print qq();
print qq(\n);
}
print "\n";
}
set_message(\&print_stack_trace);
}