X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2Fperl5db.pl;h=11d0de7bf4cb2da10ead016dddfa5e089c4d2733;hb=f8b3e957194312420089105d39c0b37773519523;hp=38ae29763e6fa2ff1af9d12fb483e4e0e5a1d7de;hpb=08a4aec0f8cf03ed75a2a45bbd19128b4b70440a;p=p5sagit%2Fp5-mst-13.2.git diff --git a/lib/perl5db.pl b/lib/perl5db.pl index 38ae297..11d0de7 100644 --- a/lib/perl5db.pl +++ b/lib/perl5db.pl @@ -2,7 +2,7 @@ package DB; # 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) @@ -1086,8 +1086,8 @@ sub DB { 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; @@ -1100,22 +1100,24 @@ sub sub { 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; } } @@ -1734,11 +1736,14 @@ sub diesignal { 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', $$; }