14 if (! -c "/dev/null") {
15 print "1..0 # Skip: no /dev/null\n";
19 my $dev_tty = '/dev/tty';
20 $dev_tty = 'TT:' if ($^O eq 'VMS');
22 print "1..0 # Skip: no $dev_tty\n";
26 print "1..0 # Skip: \$ENV{PERL5DB} is already set to '$ENV{PERL5DB}'\n";
33 my $rc_filename = '.perldb';
36 open my $rc_fh, '>', $rc_filename
41 # overly permissive perms gives "Must not source insecure rcfile"
42 # and hangs at the DB(1> prompt
43 chmod 0644, $rc_filename;
50 open my $in, '<', $filename
51 or die "Cannot open '$filename' for slurping - $!";
61 my $out_fn = 'db.out';
65 return _slurp($out_fn);
69 my $target = '../lib/perl5db/t/eval-line-bug';
73 &parse_options("NonStop=0 TTY=db.out LineInfo=db.out");
83 "p \\\@{'main::_<$target'}",
91 local $ENV{PERLDB_OPTS} = "ReadLine=0";
92 runperl(switches => [ '-d' ], progfile => $target);
96 like(_out_contents(), qr/sub factorial/,
97 'The ${main::_<filename} variable in the debugger was not destroyed'
101 my $target = '../lib/perl5db/t/eval-line-bug';
105 &parse_options("NonStop=0 TTY=db.out LineInfo=db.out");
108 push(\@DB::typeahead,
112 'x "new_var = <\$new_var>\\n";',
120 local $ENV{PERLDB_OPTS} = "ReadLine=0";
121 runperl(switches => [ '-d' ], progfile => $target);
125 like(_out_contents(), qr/new_var = <Foo>/,
126 "no strict 'vars' in evaluated lines.",
130 local $ENV{PERLDB_OPTS} = "ReadLine=0";
131 my $output = runperl(switches => [ '-d' ], progfile => '../lib/perl5db/t/lvalue-bug');
132 like($output, qr/foo is defined/, 'lvalue subs work in the debugger');
136 local $ENV{PERLDB_OPTS} = "ReadLine=0 NonStop=1";
137 my $output = runperl(switches => [ '-d' ], progfile => '../lib/perl5db/t/symbol-table-bug');
138 like($output, qr/Undefined symbols 0/, 'there are no undefined values in the symbol table');
142 if ( $Config{usethreads} ) {
143 skip('This perl has threads, skipping non-threaded debugger tests');
145 my $error = 'This Perl not built to support threads';
146 my $output = runperl( switches => [ '-dt' ], stderr => 1 );
147 like($output, qr/$error/, 'Perl debugger correctly complains that it was not built with threads');
152 if ( $Config{usethreads} ) {
153 local $ENV{PERLDB_OPTS} = "ReadLine=0 NonStop=1";
154 my $output = runperl(switches => [ '-dt' ], progfile => '../lib/perl5db/t/symbol-table-bug');
155 like($output, qr/Undefined symbols 0/, 'there are no undefined values in the symbol table when running with thread support');
157 skip("This perl is not threaded, skipping threaded debugger tests");
164 local $ENV{PERLDB_OPTS};
167 &parse_options("NonStop=0 TTY=db.out LineInfo=db.out");
178 my $output = runperl(switches => [ '-d' ], stderr => 1, progfile => '../lib/perl5db/t/rt-61222');
179 unlike(_out_contents(), qr/INCORRECT/, "[perl #61222]");
184 # Test for Proxy constants
189 &parse_options("NonStop=0 ReadLine=0 TTY=db.out LineInfo=db.out");
201 my $output = runperl(switches => [ '-d' ], stderr => 1, progfile => '../lib/perl5db/t/proxy-constants');
202 is($output, "", "proxy constant subroutines");
205 # [perl #66110] Call a subroutine inside a regex
207 local $ENV{PERLDB_OPTS} = "ReadLine=0 NonStop=1";
208 my $output = runperl(switches => [ '-d' ], stderr => 1, progfile => '../lib/perl5db/t/rt-66110');
209 like($output, "All tests successful.", "[perl #66110]");
212 # [perl 104168] level option for tracing
215 &parse_options("NonStop=0 TTY=db.out LineInfo=db.out");
218 push (@DB::typeahead,
227 my $output = runperl(switches => [ '-d' ], stderr => 1, progfile => '../lib/perl5db/t/rt-104168');
228 my $contents = _out_contents();
229 like($contents, qr/level 2/, "[perl #104168]");
230 unlike($contents, qr/baz/, "[perl #104168]");
236 local $ENV{PERLDB_OPTS} = "ReadLine=0 NonStop=1";
237 my $output = runperl(switches => [ '-d', '-T' ], stderr => 1,
238 progfile => '../lib/perl5db/t/taint');
239 chomp $output if $^O eq 'VMS'; # newline guaranteed at EOF
240 is($output, '[$^X][done]', "taint");
248 my $self = bless {}, $class;
259 $self->{_cmds} = shift;
262 return $self->{_cmds};
269 $self->{_prog} = shift;
272 return $self->{_prog};
279 $self->{_output} = shift;
282 return $self->{_output};
291 $self->{_include_t} = shift;
294 return $self->{_include_t};
303 $self->{_contents} = shift;
306 return $self->{_contents};
311 my ($self, $args) = @_;
313 my $cmds = $args->{cmds};
315 if (ref($cmds) ne 'ARRAY') {
316 die "cmds must be an array of commands.";
321 my $prog = $args->{prog};
323 if (ref($prog) ne '' or !defined($prog)) {
324 die "prog should be a path to a program file.";
329 $self->_include_t($args->{include_t} ? 1 : 0);
338 my ($self, $str) = @_;
340 $str =~ s/(["\@\$\\])/\\$1/g;
350 my $rc = qq{&parse_options("NonStop=0 TTY=db.out LineInfo=db.out");\n};
355 q#push (@DB::typeahead,#,
356 (map { $self->_quote($_) . "," } @{$self->_cmds()}),
362 # I guess two objects like that cannot be used at the same time.
371 ($self->_include_t ? ('-I', '../lib/perl5db/t') : ())
374 progfile => $self->_prog()
377 $self->_output($output);
379 $self->_contents(::_out_contents());
385 my ($self, $re, $msg) = @_;
387 local $::Level = $::Level + 1;
388 ::like($self->_output(), $re, $msg);
392 my ($self, $re, $msg) = @_;
394 local $::Level = $::Level + 1;
395 ::unlike($self->_output(), $re, $msg);
399 my ($self, $re, $msg) = @_;
401 local $::Level = $::Level + 1;
402 ::like($self->_contents(), $re, $msg);
405 sub contents_unlike {
406 my ($self, $re, $msg) = @_;
408 local $::Level = $::Level + 1;
409 ::unlike($self->_contents(), $re, $msg);
414 # Testing that we can set a line in the middle of the file.
416 my $wrapper = DebugWrap->new(
420 'b ../lib/perl5db/t/MyModule.pm:12',
422 q/do { use IO::Handle; STDOUT->autoflush(1); print "Var=$var\n"; }/,
427 prog => '../lib/perl5db/t/filename-line-breakpoint'
431 $wrapper->output_like(qr/
439 "Can set breakpoint in a line in the middle of the file.");
442 # Testing that we can set a breakpoint
444 my $wrapper = DebugWrap->new(
446 prog => '../lib/perl5db/t/breakpoint-bug',
451 q/do { use IO::Handle; STDOUT->autoflush(1); print "X={$x}\n"; }/,
458 $wrapper->output_like(
460 "Can set breakpoint in a line."
464 # Testing that we can disable a breakpoint at a numeric line.
466 my $wrapper = DebugWrap->new(
468 prog => '../lib/perl5db/t/disable-breakpoints-1',
475 q/print "X={$x}\n";/,
482 $wrapper->output_like(qr/X=\{SecondVal\}/ms,
483 "Can set breakpoint in a line.");
486 # Testing that we can re-enable a breakpoint at a numeric line.
488 my $wrapper = DebugWrap->new(
490 prog => '../lib/perl5db/t/disable-breakpoints-2',
499 q/print "X={$x}\n";/,
506 $wrapper->output_like(
508 X=\{SecondValOneHundred\}
510 "Can set breakpoint in a line."
515 # Disable and enable for breakpoints on outer files.
517 my $wrapper = DebugWrap->new(
522 'b ../lib/perl5db/t/EnableModule.pm:14',
523 'disable ../lib/perl5db/t/EnableModule.pm:14',
525 'enable ../lib/perl5db/t/EnableModule.pm:14',
527 q/print "X={$x}\n";/,
531 prog => '../lib/perl5db/t/disable-breakpoints-3',
536 $wrapper->output_like(qr/
537 X=\{SecondValTwoHundred\}
539 "Can set breakpoint in a line.");
542 # Testing that the prompt with the information appears.
544 my $wrapper = DebugWrap->new(
547 prog => '../lib/perl5db/t/disable-breakpoints-1',
551 $wrapper->contents_like(qr/
552 ^main::\([^\)]*\bdisable-breakpoints-1:2\):\n
553 2:\s+my\ \$x\ =\ "One";\n
555 "Prompt should display the first line of code.");
558 # Testing that R (restart) and "B *" work.
560 my $wrapper = DebugWrap->new(
570 q/print "X={$x};dummy={$dummy}\n";/,
573 prog => '../lib/perl5db/t/disable-breakpoints-1',
577 $wrapper->output_like(qr/
578 X=\{FirstVal\};dummy=\{1\}
580 "Restart and delete all breakpoints work properly.");
584 my $wrapper = DebugWrap->new(
589 q/print "X={$x}\n";/,
593 prog => '../lib/perl5db/t/disable-breakpoints-1',
597 $wrapper->output_like(qr/
600 "'c line_num' is working properly.");
604 my $wrapper = DebugWrap->new(
612 q/print "Exp={$exp}\n";/,
615 prog => '../lib/perl5db/t/break-on-dot',
619 $wrapper->output_like(qr/
622 "'b .' is working correctly.");
625 # Testing that the prompt with the information appears inside a subroutine call.
626 # See https://rt.perl.org/rt3/Ticket/Display.html?id=104820
628 my $wrapper = DebugWrap->new(
635 prog => '../lib/perl5db/t/with-subroutine',
639 $wrapper->contents_like(
641 ^main::back\([^\)\n]*\bwith-subroutine:15\):[\ \t]*\n
642 ^15:\s*print\ "hello\ back\\n";
644 "Prompt should display the line of code inside a subroutine.");
647 # Checking that the p command works.
649 my $wrapper = DebugWrap->new(
653 'p "<<<" . (4*6) . ">>>"',
656 prog => '../lib/perl5db/t/with-subroutine',
660 $wrapper->contents_like(
667 my $wrapper = DebugWrap->new(
674 prog => '../lib/perl5db/t/with-subroutine',
678 $wrapper->contents_like(
679 # qr/^0\s+HASH\([^\)]+\)\n\s+500 => 600\n/,
680 qr/^0\s+HASH\([^\)]+\)\n\s+500 => 600\n/ms,
685 # Tests for "T" (stack trace).
687 my $prog_fn = '../lib/perl5db/t/rt-104168';
688 my $wrapper = DebugWrap->new(
699 my $re_text = join('',
702 "%s = %s\\(\\) called from file " .
703 "'" . quotemeta($prog_fn) . "' line %s\\n",
704 (map { quotemeta($_) } @$_)
708 ['.', 'main::baz', 14,],
709 ['.', 'main::bar', 9,],
710 ['.', 'main::foo', 6],
713 $wrapper->contents_like(
714 # qr/^0\s+HASH\([^\)]+\)\n\s+500 => 600\n/,
722 my $wrapper = DebugWrap->new(
729 q/print "X={$x};dummy={$dummy}\n";/,
732 prog => '../lib/perl5db/t/disable-breakpoints-1'
736 $wrapper->output_like(qr/
737 X=\{SecondVal\};dummy=\{1\}
739 'test for s - single step',
744 my $wrapper = DebugWrap->new(
752 q/print "Exp={$exp}\n";/,
755 prog => '../lib/perl5db/t/break-on-dot'
759 $wrapper->output_like(qr/
762 "'b .' is working correctly.");
766 my $prog_fn = '../lib/perl5db/t/rt-104168';
767 my $wrapper = DebugWrap->new(
778 $wrapper->contents_like(
780 ^main::foo\([^\)\n]*\brt-104168:9\):[\ \t]*\n
783 'Test for the s command.',
788 my $wrapper = DebugWrap->new(
792 's uncalled_subroutine()',
797 prog => '../lib/perl5db/t/uncalled-subroutine'}
800 $wrapper->output_like(
802 'uncalled_subroutine was called after s EXPR()',
807 my $wrapper = DebugWrap->new(
811 'n uncalled_subroutine()',
815 prog => '../lib/perl5db/t/uncalled-subroutine',
819 $wrapper->output_like(
821 'uncalled_subroutine was called after n EXPR()',
826 my $wrapper = DebugWrap->new(
838 prog => '../lib/perl5db/t/fact',
842 $wrapper->output_like(
844 'b subroutine works fine',
848 # Test for 'M' (module list).
850 my $wrapper = DebugWrap->new(
857 prog => '../lib/perl5db/t/load-modules'
861 $wrapper->contents_like(
863 'M (module list) works fine',
868 my $wrapper = DebugWrap->new(
876 'print "Var=$var\n";',
879 prog => '../lib/perl5db/t/test-r-statement',
883 $wrapper->output_like(
891 'r statement is working properly.',
896 my $wrapper = DebugWrap->new(
903 prog => '../lib/perl5db/t/test-l-statement-1',
907 $wrapper->contents_like(
910 2:\s+print\ "1\\n";\n
913 5:\s+print\ "2\\n";\n
915 'l statement is working properly (test No. 1).',
920 my $wrapper = DebugWrap->new(
932 prog => '../lib/perl5db/t/test-l-statement-1',
936 my $first_l_out = qr/
938 2:\s+print\ "1\\n";\n
941 5:\s+print\ "2\\n";\n
944 8:\s+print\ "3\\n";\n
949 my $second_l_out = qr/
950 11:\s+print\ "4\\n";\n
953 14:\s+print\ "5\\n";\n
956 17:\s+print\ "6\\n";\n
959 20:\s+print\ "7\\n";\n
961 $wrapper->contents_like(
964 [^\n]*?DB<\d+>\ \#\ After\ l\ 1\n
966 [^\n]*?DB<\d+>\ l\s*\n
968 [^\n]*?DB<\d+>\ \#\ After\ l\ 2\n
970 [^\n]*?DB<\d+>\ -\s*\n
972 [^\n]*?DB<\d+>\ \#\ After\ -\n
974 'l followed by l and then followed by -',
979 my $wrapper = DebugWrap->new(
986 prog => '../lib/perl5db/t/test-l-statement-2',
990 my $first_l_out = qr/
992 7:\s+my\ \$n\ =\ shift;\n
993 8:\s+if\ \(\$n\ >\ 1\)\ \{\n
994 9:\s+return\ \$n\ \*\ fact\(\$n\ -\ 1\);
997 $wrapper->contents_like(
1002 'l subroutine_name',
1007 my $wrapper = DebugWrap->new(
1013 # Repeat several times to avoid @typeahead problems.
1020 prog => '../lib/perl5db/t/test-l-statement-2',
1025 ^main::fact\([^\n]*?:7\):\n
1026 ^7:\s+my\ \$n\ =\ shift;\n
1029 $wrapper->contents_like(
1034 'Test the "." command',
1038 # Testing that the f command works.
1040 my $wrapper = DebugWrap->new(
1044 'f ../lib/perl5db/t/MyModule.pm',
1047 q/do { use IO::Handle; STDOUT->autoflush(1); print "Var=$var\n"; }/,
1052 prog => '../lib/perl5db/t/filename-line-breakpoint'
1056 $wrapper->output_like(qr/
1064 "f command is working.",
1068 # We broke the /pattern/ command because apparently the CORE::eval-s inside
1069 # lib/perl5db.pl cannot handle lexical variable properly. So we now fix this
1074 # 1. Go over the rest of the "eval"s in lib/perl5db.t and see if they cause
1077 my $wrapper = DebugWrap->new(
1084 prog => '../lib/perl5db/t/eval-line-bug',
1088 $wrapper->contents_like(
1089 qr/12: \s* for\ my\ \$q\ \(1\ \.\.\ 10\)\ \{/msx,
1090 "/pat/ command is working and found a match.",
1095 my $wrapper = DebugWrap->new(
1104 prog => '../lib/perl5db/t/eval-line-bug',
1108 $wrapper->contents_like(
1109 qr/12: \s* for\ my\ \$q\ \(1\ \.\.\ 10\)\ \{/msx,
1110 "?pat? command is working and found a match.",
1114 # Test the L command.
1116 my $wrapper = DebugWrap->new(
1125 prog => '../lib/perl5db/t/eval-line-bug',
1129 $wrapper->contents_like(
1131 ^\S*?eval-line-bug:\n
1132 \s*6:\s*my\ \$i\ =\ 5;\n
1133 \s*break\ if\ \(1\)\n
1134 \s*13:\s*\$i\ \+=\ \$q;\n
1135 \s*break\ if\ \(\(\$q\ ==\ 5\)\)\n
1137 "L command is listing breakpoints",
1141 # Test the L command for watch expressions.
1143 my $wrapper = DebugWrap->new(
1151 prog => '../lib/perl5db/t/eval-line-bug',
1155 $wrapper->contents_like(
1157 ^Watch-expressions:\n
1160 "L command is listing watch expressions",
1165 my $wrapper = DebugWrap->new(
1175 prog => '../lib/perl5db/t/eval-line-bug',
1179 $wrapper->contents_like(
1181 ^Watch-expressions:\n
1185 "L command is not listing deleted watch expressions",
1189 # Test the L command.
1191 my $wrapper = DebugWrap->new(
1200 prog => '../lib/perl5db/t/eval-line-bug',
1204 $wrapper->contents_like(
1206 ^\S*?eval-line-bug:\n
1207 \s*6:\s*my\ \$i\ =\ 5;\n
1208 \s*break\ if\ \(1\)\n
1209 \s*13:\s*\$i\ \+=\ \$q;\n
1210 \s*action:\s+print\ \$i\n
1212 "L command is listing actions and breakpoints",
1217 my $wrapper = DebugWrap->new(
1224 prog => '../lib/perl5db/t/rt-104168',
1228 $wrapper->contents_like(
1239 my $wrapper = DebugWrap->new(
1246 prog => '../lib/perl5db/t/rt-104168',
1250 $wrapper->contents_like(
1256 "S command with regex",
1261 my $wrapper = DebugWrap->new(
1268 prog => '../lib/perl5db/t/rt-104168',
1272 $wrapper->contents_unlike(
1276 "S command with negative regex",
1279 $wrapper->contents_like(
1283 "S command with negative regex - what it still matches",
1287 # Test the a command.
1289 my $wrapper = DebugWrap->new(
1293 'a 13 print "\nVar<Q>=$q\n"',
1297 prog => '../lib/perl5db/t/eval-line-bug',
1301 $wrapper->output_like(qr#
1306 "a command is working",
1310 # Test the 'A' command
1312 my $wrapper = DebugWrap->new(
1316 'a 13 print "\nVar<Q>=$q\n"',
1321 prog => '../lib/perl5db/t/eval-line-bug',
1325 $wrapper->output_like(
1326 qr#\A\z#msx, # The empty string.
1327 "A command (for removing actions) is working",
1331 # Test the 'A *' command
1333 my $wrapper = DebugWrap->new(
1337 'a 6 print "\nFail!\n"',
1338 'a 13 print "\nVar<Q>=$q\n"',
1343 prog => '../lib/perl5db/t/eval-line-bug',
1347 $wrapper->output_like(
1348 qr#\A\z#msx, # The empty string.
1349 "'A *' command (for removing all actions) is working",
1354 my $wrapper = DebugWrap->new(
1361 'print "\nIDX=<$idx>\n"',
1364 prog => '../lib/perl5db/t/test-w-statement-1',
1369 $wrapper->contents_like(qr#
1371 \s+old\ value:\s+'1'\n
1372 \s+new\ value:\s+'2'\n
1374 'w command - watchpoint changed',
1376 $wrapper->output_like(qr#
1379 "w command - correct output from IDX",
1384 my $wrapper = DebugWrap->new(
1392 'print "\nIDX=<$idx>\n"',
1395 prog => '../lib/perl5db/t/test-w-statement-1',
1399 $wrapper->contents_unlike(qr#
1402 'W command - watchpoint was deleted',
1405 $wrapper->output_like(qr#
1408 "W command - stopped at end.",
1412 # Test the W * command.
1414 my $wrapper = DebugWrap->new(
1423 'print "\nIDX=<$idx>\n"',
1426 prog => '../lib/perl5db/t/test-w-statement-1',
1430 $wrapper->contents_unlike(qr#
1433 '"W *" command - watchpoint was deleted',
1436 $wrapper->output_like(qr#
1439 '"W *" command - stopped at end.',
1443 # Test the 'o' command (without further arguments).
1445 my $wrapper = DebugWrap->new(
1452 prog => '../lib/perl5db/t/test-w-statement-1',
1456 $wrapper->contents_like(qr#
1457 ^\s*warnLevel\ =\ '1'\n
1459 q#"o" command (without arguments) displays warnLevel#,
1462 $wrapper->contents_like(qr#
1463 ^\s*signalLevel\ =\ '1'\n
1465 q#"o" command (without arguments) displays signalLevel#,
1468 $wrapper->contents_like(qr#
1469 ^\s*dieLevel\ =\ '1'\n
1471 q#"o" command (without arguments) displays dieLevel#,
1474 $wrapper->contents_like(qr#
1475 ^\s*hashDepth\ =\ 'N/A'\n
1477 q#"o" command (without arguments) displays hashDepth#,
1481 # Test the 'o' query command.
1483 my $wrapper = DebugWrap->new(
1487 'o hashDepth? signalLevel?',
1490 prog => '../lib/perl5db/t/test-w-statement-1',
1494 $wrapper->contents_unlike(qr#warnLevel#,
1495 q#"o" query command does not display warnLevel#,
1498 $wrapper->contents_like(qr#
1499 ^\s*signalLevel\ =\ '1'\n
1501 q#"o" query command displays signalLevel#,
1504 $wrapper->contents_unlike(qr#dieLevel#,
1505 q#"o" query command does not display dieLevel#,
1508 $wrapper->contents_like(qr#
1509 ^\s*hashDepth\ =\ 'N/A'\n
1511 q#"o" query command displays hashDepth#,
1515 # Test the 'o' set command.
1517 my $wrapper = DebugWrap->new(
1525 prog => '../lib/perl5db/t/test-w-statement-1',
1529 $wrapper->contents_like(qr/
1530 ^\s*(signalLevel\ =\ '0'\n)
1534 q#o set command works#,
1537 $wrapper->contents_like(qr#
1538 ^\s*hashDepth\ =\ 'N/A'\n
1540 q#o set command - hashDepth#,
1544 # Test the '<' and "< ?" commands.
1546 my $wrapper = DebugWrap->new(
1550 q/< print "\nX=<$x>\n"/,
1556 prog => '../lib/perl5db/t/disable-breakpoints-1',
1560 $wrapper->contents_like(qr/
1561 ^pre-perl\ commands:\n
1562 \s*<\ --\ print\ "\\nX=<\$x>\\n"\n
1564 q#Test < and < ? commands - contents.#,
1567 $wrapper->output_like(qr#
1570 q#Test < and < ? commands - output.#,
1574 # Test the '< *' command.
1576 my $wrapper = DebugWrap->new(
1580 q/< print "\nX=<$x>\n"/,
1586 prog => '../lib/perl5db/t/disable-breakpoints-1',
1590 $wrapper->output_unlike(qr/FirstVal/,
1591 q#Test the '< *' command.#,
1595 # Test the '>' and "> ?" commands.
1597 my $wrapper = DebugWrap->new(
1602 q/> print "\nFOO=<$::foo>\n"/,
1608 prog => '../lib/perl5db/t/disable-breakpoints-1',
1612 $wrapper->contents_like(qr/
1613 ^post-perl\ commands:\n
1614 \s*>\ --\ print\ "\\nFOO=<\$::foo>\\n"\n
1616 q#Test > and > ? commands - contents.#,
1619 $wrapper->output_like(qr#
1622 q#Test > and > ? commands - output.#,
1626 # Test the '> *' command.
1628 my $wrapper = DebugWrap->new(
1632 q/> print "\nFOO=<$::foo>\n"/,
1638 prog => '../lib/perl5db/t/disable-breakpoints-1',
1642 $wrapper->output_unlike(qr/FOO=/,
1643 q#Test the '> *' command.#,
1647 # Test the < and > commands together
1649 my $wrapper = DebugWrap->new(
1654 q/< $::lorem += 10;/,
1655 q/> print "\nLOREM=<$::lorem>\n"/,
1662 prog => '../lib/perl5db/t/disable-breakpoints-1',
1666 $wrapper->output_like(qr#
1669 q#Test < and > commands. #,
1673 # Test the { ? and { [command] commands.
1675 my $wrapper = DebugWrap->new(
1686 prog => '../lib/perl5db/t/disable-breakpoints-1',
1690 $wrapper->contents_like(qr#
1691 ^No\ pre-debugger\ actions\.\n
1693 ^pre-debugger\ commands:\n
1696 ^5==>b\s+\$x\ =\ "FirstVal";\n
1700 9:\s+\$x\ =\ "SecondVal";\n
1703 'Test the pre-prompt debugger commands',
1708 1 while unlink ($rc_filename, $out_fn);