# Debugger for Perl 5.00x; perl5db.pl patch level:
-$VERSION = 0.9904;
+$VERSION = 0.9906;
$header = "perl5db.pl patch level $VERSION";
# Enhanced by ilya@math.ohio-state.edu (Ilya Zakharevich)
sub sub {
my ($al, $ret, @ret) = "";
- if ($sub =~ /(.*)::AUTOLOAD$/) {
- $al = " for $ {$1 . '::AUTOLOAD'}";
+ if (length($sub) > 10 && substr($sub, -10, 10) eq '::AUTOLOAD') {
+ $al = " for $$sub";
}
push(@stack, $single);
$single &= 1;
if (wantarray) {
@ret = &$sub;
$single |= pop(@stack);
- print ($OUT "list context return from $sub:\n"), dumpit( \@ret ),
- $doret = -2 if $doret eq $#stack;
($frame & 4
? ( (print $LINEINFO ' ' x $#stack, "out "),
print_trace($LINEINFO, -1, 1, 1, "$sub$al") )
: print $LINEINFO ' ' x $#stack, "exited $sub$al\n") if $frame & 2;
+ print ($OUT ($frame & 16 ? ' ' x $#stack : ""),
+ "list context return from $sub:\n"), dumpit( \@ret ),
+ $doret = -2 if $doret eq $#stack or $frame & 16;
@ret;
} else {
$ret = &$sub;
$single |= pop(@stack);
- print ($OUT "scalar context return from $sub: "), dumpit( $ret ),
- $doret = -2 if $doret eq $#stack;
($frame & 4
? ( (print $LINEINFO ' ' x $#stack, "out "),
print_trace($LINEINFO, -1, 1, 1, "$sub$al") )
: print $LINEINFO ' ' x $#stack, "exited $sub$al\n") if $frame & 2;
+ print ($OUT ($frame & 16 ? ' ' x $#stack : ""),
+ "scalar context return from $sub: "), dumpit( $ret ),
+ $doret = -2 if $doret eq $#stack or $frame & 16;
$ret;
}
}
local $doret = -2;
$SIG{'ABRT'} = 'DEFAULT';
kill 'ABRT', $$ if $panic++;
- print $DB::OUT "Got $_[0]!\n"; # in the case cannot continue
- local $SIG{__WARN__} = '';
- require Carp;
- local $Carp::CarpLevel = 2; # mydie + confess
- &warn(Carp::longmess("Signal @_"));
+ if (defined &Carp::longmess) {
+ local $SIG{__WARN__} = '';
+ local $Carp::CarpLevel = 2; # mydie + confess
+ &warn(Carp::longmess("Signal @_"));
+ }
+ else {
+ print $DB::OUT "Got signal @_\n";
+ }
kill 'ABRT', $$;
}