From ea783c61e83adb1b7f4ca0314b3ddf4171896bf1 Mon Sep 17 00:00:00 2001 From: Dirk Koopman Date: Sat, 25 Apr 2020 00:47:02 +0100 Subject: [PATCH] do some ring printing if carp et al are called --- perl/DXDebug.pm | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/perl/DXDebug.pm b/perl/DXDebug.pm index ca5339a1..634bf972 100644 --- a/perl/DXDebug.pm +++ b/perl/DXDebug.pm @@ -52,27 +52,29 @@ if (!defined $DB::VERSION) { local $^W=0; eval qq( sub confess { \$SIG{__DIE__} = 'DEFAULT'; - DXDebug::dbgprintring() unless DXDebug::isdbg('chan'); - DXDebug::dbgclearring(); + DXDebug::dbgprintring() if DXDebug('nologchan'); DXDebug::dbg(\$@); DXDebug::dbg(Carp::shortmess(\@_)); exit(-1); } sub croak { \$SIG{__DIE__} = 'DEFAULT'; - DXDebug::dbgprintring() unless DXDebug::isdbg('chan'); - DXDebug::dbgclearring(); + DXDebug::dbgprintring() if DXDebug('nologchan'); DXDebug::dbg(\$@); DXDebug::dbg(Carp::longmess(\@_)); exit(-1); } - sub carp { DXDebug::dbg(Carp::shortmess(\@_)); } - sub cluck { DXDebug::dbg(Carp::longmess(\@_)); } - ); + sub carp { + DXDebug::dbgprintring(25) if DXDebug('nologchan'); + DXDebug::dbg(Carp::shortmess(\@_)); + } + sub cluck { + DXDebug::dbgprintring(25) if DXDebug('nologchan'); + DXDebug::dbg(Carp::longmess(\@_)); + } ); CORE::die(Carp::shortmess($@)) if $@; -} -else { +} else { eval qq( sub confess { die Carp::longmess(\@_); }; sub croak { die Carp::shortmess(\@_); }; sub cluck { warn Carp::longmess(\@_); }; @@ -215,8 +217,10 @@ sub longmess sub dbgprintring { return unless $fp; + my $count = shift || $dbgringlth+1; my $first; - while (my $l = shift @dbgring) { + my $l; + for ( ; $count > 0 && ($l = shift @dbgring); --$count) { my ($t, $str) = split /\^/, $l, 2; next unless $t; my $lt = time; -- 2.34.1