X-Git-Url: http://dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXDebug.pm;h=947923f2d4a4acb499f1d9b2fc5ef90a58809c08;hb=8319342af0b4eecd2108bb8552ce685e01ad365f;hp=ca5339a154c5080c3f6f5074e4321f5f3442b783;hpb=f6abc902d49e13eeca3ff50f84a74f28a3aa3390;p=spider.git diff --git a/perl/DXDebug.pm b/perl/DXDebug.pm index ca5339a1..947923f2 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::isdbg('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::isdbg('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,14 +217,18 @@ sub longmess sub dbgprintring { return unless $fp; + my $count = shift; my $first; - while (my $l = shift @dbgring) { - my ($t, $str) = split /\^/, $l, 2; + my $l; + my $i = defined $count ? @dbgring-$count : 0; + $count = @dbgring; + for ( ; $i < $count; ++$i) { + my ($t, $str) = split /\^/, $dbgring[$i], 2; next unless $t; my $lt = time; unless ($first) { $fp->writeunix($lt, "$lt^###"); - $fp->writeunix($lt, "$lt^### RINGBUFFER START"); + $fp->writeunix($lt, "$lt^### RINGBUFFER START at line $i (zero base)"); $fp->writeunix($lt, "$lt^###"); $first = $t; }