This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perl -d: fixes "b . COND()".
authorShlomi Fish <shlomif@shlomifish.org>
Mon, 12 Dec 2011 14:51:00 +0000 (16:51 +0200)
committerRicardo Signes <rjbs@cpan.org>
Wed, 28 Dec 2011 18:27:01 +0000 (13:27 -0500)
break-dot for filename was broken due to previous commits. It was fixed
now. Also documented it in pod/perldebug.pod, because it was
undocumented.

MANIFEST
lib/perl5db.pl
lib/perl5db.t
lib/perl5db/t/break-on-dot [new file with mode: 0644]
pod/perldebug.pod
pod/perldelta.pod

index c362ffb..7435ba7 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -4237,6 +4237,7 @@ lib/overload.pm                   Module for overloading perl operators
 lib/overload.t                 See if operator overloading works
 lib/perl5db.pl                 Perl debugging routines
 lib/perl5db.t                  Tests for the Perl debugger
+lib/perl5db/t/break-on-dot     Test script used by perl5db.t
 lib/perl5db/t/breakpoint-bug   Test script used by perl5db.t
 lib/perl5db/t/disable-breakpoints-1    Test script used by perl5db.t
 lib/perl5db/t/disable-breakpoints-2    Test script used by perl5db.t
index f62f2ab..874f6e1 100644 (file)
@@ -519,7 +519,7 @@ BEGIN {
 }
 
 # Debugger for Perl 5.00x; perl5db.pl patch level:
-$VERSION = '1.35';
+$VERSION = '1.36';
 
 $header = "perl5db.pl version $VERSION";
 
@@ -4207,7 +4207,7 @@ sub cmd_b {
     my $dbline = shift;
 
     # Make . the current line number if it's there..
-    $line =~ s/^\.\b/$dbline/;
+    $line =~ s/^\.(\s|\z)/$dbline$1/;
 
     # No line number, no condition. Simple break on current line.
     if ( $line =~ /^\s*$/ ) {
index ba5d585..c583a85 100644 (file)
@@ -28,7 +28,7 @@ BEGIN {
     }
 }
 
-plan(20);
+plan(21);
 
 my $rc_filename = '.perldb';
 
@@ -456,6 +456,30 @@ EOF
         "'c line_num' is working properly.");
 }
 
+{
+    rc(<<'EOF');
+&parse_options("NonStop=0 TTY=db.out LineInfo=db.out");
+
+sub afterinit {
+    push (@DB::typeahead,
+    'n',
+    'n',
+    'b . $exp > 200',
+    'c',
+    q/print "Exp={$exp}\n";/,
+    'q',
+    );
+
+}
+EOF
+
+    my $output = runperl(switches => [ '-d', ], stderr => 1, progfile => '../lib/perl5db/t/break-on-dot'); +
+    like($output, qr/
+        Exp=\{256\}
+        /msx,
+        "'b .' is working correctly.");
+}
+
 END {
     1 while unlink ($rc_filename, $out_fn);
 }
diff --git a/lib/perl5db/t/break-on-dot b/lib/perl5db/t/break-on-dot
new file mode 100644 (file)
index 0000000..a9ee1a3
--- /dev/null
@@ -0,0 +1,10 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+my $exp = 1;
+for my $i (1 .. 20)
+{
+    $exp *= 2;
+}
index fcdb29c..4a2f07e 100644 (file)
@@ -304,6 +304,10 @@ don't use C<if>:
     b 237 ++$count237 < 11
     b 33 /pattern/i
 
+If the line number is C<.>, sets a breakpoint on the current line:
+
+    b . $n > 100
+
 =item b [file]:[line] [condition]
 X<breakpoint>
 X<debugger command, b>
index b20eaf4..4f282ad 100644 (file)
@@ -340,9 +340,10 @@ L</Modules and Pragmata>.
 
 =over 4
 
-=item *
+=item * "b . COND" in the debugger has been fixed
 
-XXX
+Breaking on the current line with C<b . COND> was broken by previous work and
+has now been fixed.
 
 =back