X-Git-Url: http://www.dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXDebug.pm;h=c2e5f28f1adb81a009f087a067e26f1f0b22debb;hb=refs%2Fheads%2Fstaging;hp=28ae8fe56281137a056bac41954fa6013c1f8481;hpb=ed4c2b52bead2215f39de1d75bc3d09daa83caa9;p=spider.git diff --git a/perl/DXDebug.pm b/perl/DXDebug.pm index 28ae8fe5..c2e5f28f 100644 --- a/perl/DXDebug.pm +++ b/perl/DXDebug.pm @@ -28,7 +28,7 @@ use 5.10.1; require Exporter; @ISA = qw(Exporter); -@EXPORT = qw(dbginit dbg dbgadd dbgsub dbglist dbgdump isdbg dbgclose dbgtrace confess croak cluck carp); +@EXPORT = qw(dbginit dbg dbgadd dbgsub dbglist dbgdump isdbg dbgclose dbgtrace dbgprintring confess croak cluck carp); use strict; use vars qw(%dbglevel $fp $callback $cleandays $keepdays $dbgringlth); @@ -104,7 +104,7 @@ sub dbgtrace last if $pkg =~ /Mojo/; # say "*** in dbgtrace $i after mojo"; $_isdbg = 'trace'; - dbg("Stack ($i): $pkg::$subr in $fn line: $l"); + dbg("Stack ($i): ${pkg}::$subr in $fn line: $l"); } $_isdbg = ''; } @@ -119,8 +119,8 @@ sub dbg my @l = split /\n/, $r; foreach my $l (@l) { $l =~ s/([\x00-\x08\x0B-\x1f\x7f-\xff])/sprintf("%%%02X",ord($1))/eg; - print "$l\n" if defined \*STDOUT && !$no_stdout; my $tag = $_isdbg ? "($_isdbg) " : '(*) '; + print "$tag$l\n" if defined \*STDOUT && !$no_stdout; my $str = "$t^$tag$l"; &$callback($str) if $callback; if ($dbgringlth) { @@ -130,10 +130,12 @@ sub dbg $fp->writeunix($t, $str) unless !$fp || $dbglevel{"nolog$_isdbg"} ; } } + $_isdbg = ''; } sub dbginit { + my $basename = shift || 'debug'; $callback = shift; # add sig{__DIE__} handling @@ -160,7 +162,7 @@ sub dbginit } } - $fp = DXLog::new('debug', 'dat', 'd'); + $fp = DXLog::new($basename, 'dat', 'd'); dbgclearring(); } @@ -182,6 +184,7 @@ sub dbgdump my $l = shift; my $m = shift; if ($dbglevel{$l} || $l eq 'err') { + my @out; foreach my $l (@_) { for (my $o = 0; $o < length $l; $o += 16) { my $c = substr $l, $o, 16; @@ -189,11 +192,12 @@ sub dbgdump $c =~ s/[\x00-\x1f\x7f-\xff]/./g; my $left = 16 - length $c; $h .= ' ' x (2 * $left) if $left > 0; - dbg($m . sprintf("%4d:", $o) . "$h $c"); + push @out, $m . sprintf("%4d:", $o) . "$h $c"; $m = ' ' x (length $m); } } - } + dbg(@out) if isdbg($l); # yes, I know, I have my reasons; + } } sub dbgadd