From bac92875e5f1703041986379c9c0d7d3588228ff Mon Sep 17 00:00:00 2001 From: Dirk Koopman Date: Thu, 3 Feb 2022 14:55:57 +0000 Subject: [PATCH] improve help for grepdbg and watchdbg --- Changes | 2 ++ perl/DXChannel.pm | 2 +- perl/grepdbg | 21 +++++++++++++++------ perl/watchdbg | 33 ++++++++++++++++++++++++++++++--- 4 files changed, 48 insertions(+), 10 deletions(-) diff --git a/Changes b/Changes index 0f3234a3..e2f1c254 100644 --- a/Changes +++ b/Changes @@ -1,3 +1,5 @@ +03Feb22======================================================================= +1. Improve/add the help text for grepdbg and watchdbg. 31Jan22======================================================================= 1. Set $RBN::respottime to 3 minutes. NOTE change of name from $RBN::minspottime. diff --git a/perl/DXChannel.pm b/perl/DXChannel.pm index 29919c7e..8b1792cd 100644 --- a/perl/DXChannel.pm +++ b/perl/DXChannel.pm @@ -719,7 +719,7 @@ sub process_one if ($sort ne 'D') { if (isdbg('chan')) { if (($self->is_rbn && isdbg('rbnchan')) || !$self->is_rbn) { - dbg("<- $sort $call $line") if isdbg('chan'); + dbg("<- $sort $call $line") if isdbg('chan'); # you may think this is tautology, but it's needed get the correct label on the debug line } } } diff --git a/perl/grepdbg b/perl/grepdbg index f61d7cc1..8fa76857 100755 --- a/perl/grepdbg +++ b/perl/grepdbg @@ -8,8 +8,9 @@ # nn - is the day you what to look at: 1 is yesterday, 0 is today # and is optional if there is only one argument # -# -mmm - print the mmm lines before the match. So -10 will print -# ten lines including the line matching the regular expression. +# -mmm - print the mmm lines before the match. So -3 will print +# 4 lines altogether, the 3 lines before the line matching +# the regular expression. # # is the regular expression you are searching for, # a caseless search is done. There can be more than one @@ -60,7 +61,7 @@ foreach my $arg (@ARGV) { usage(); exit(0); } - $nolines = $arg if $arg =~ /^\d+$/; + $nolines += $arg if $arg =~ /^\d+$/; } elsif ($arg =~ /^\d+$/) { push @days, $arg; } elsif ($arg =~ /\.pm$/) { @@ -136,7 +137,7 @@ sub usage { print << "XXX"; - usage: grepdbg [nn days before] [-nnn lines before] [] [|!]... + usage: grepdbg [nn days before] [-nnn lines before] [] [|!]... You can have more than one with an implicit 'and' between them. All are caseless. It's recommended to put 'not' (!) first in any list. @@ -150,8 +151,13 @@ sub usage is a handy way of scrolling through the debug log. + grepdbg -2 progress + + will display any line containing 'progress' and also the two lines before that. + You can install your own content and display arrangement (useful for filtering data in some complicated way). You call it like this (assuming it is called 'filter.pm'). + This is what is meant by . grepdbg filter.pm @@ -174,8 +180,11 @@ sub usage You can also add a 'sub total {...}' which executes after the last line is printed and grepdbg exits. - Read the code of this program and copy'n'paste the 'sub process' code and change - its name to 'sub handle'. Modify it to your requirements... + Read the code of this program and copy'n'paste the 'sub + process' code into a new file. Then change 'sub process' + to 'sub handle'. Add the line 'package main;' at the beginning + of the file and a line '1;' at the end and then modify it to + your requirements... XXX } diff --git a/perl/watchdbg b/perl/watchdbg index a497eff9..2b1986a7 100755 --- a/perl/watchdbg +++ b/perl/watchdbg @@ -37,11 +37,20 @@ my $fp = DXLog::new('debug', 'dat', 'd'); my $today = $fp->unixtoj(time()); my $fh = $fp->open($today) or die $!; my $nolines = 1; -$nolines = shift if $ARGV[0] =~ /^-?\d+$/; -$nolines = abs $nolines if $nolines < 0; -my @patt = @ARGV; +my @patt; my @prev; +while (@ARGV) { + my $arg = shift; + if ($arg =~ /^-+(\d+)/) { + $nolines += $1; + next; + } + usage(), exit(0) if $arg =~ /^-+[h\?]/i; + push @patt, $arg; +} + + # seek to end of file $fh->seek(0, 2); for (;;) { @@ -98,3 +107,21 @@ sub printit } } exit(0); + +sub usage +{ + print << "XXX"; + + usage: watchdbg [-nnn lines before] [|!]... + + You can have more than one with an implicit 'and' between them. All + are caseless. It's recommended to put 'not' (!) first in any list. + Don't forget that you are doing this in a shell and you may need to quote your + s. + + watchdbg -2 progress + + will display any line containing 'progress' and also the two lines before that. + +XXX +} -- 2.43.0