Allow several arguments to display().
[p5sagit/p5-mst-13.2.git] / lib / perl5db.pl
index aa475d8..a1eaf09 100644 (file)
@@ -2,13 +2,16 @@ package DB;
 
 # Debugger for Perl 5.00x; perl5db.pl patch level:
 
-$VERSION = 1.14;
+$VERSION = 1.15;
 $header = "perl5db.pl version $VERSION";
 
 #
 # This file is automatically included if you do perl -d.
 # It's probably not useful to include this yourself.
 #
+# Before venturing further into these twisty passages, it is 
+# wise to read the perldebguts man page or risk the ire of dragons.
+#
 # Perl supplies the values for %sub.  It effectively inserts
 # a &DB'DB(); in front of every place that can have a
 # breakpoint. Instead of a subroutine call it calls &DB::sub with
@@ -25,14 +28,15 @@ $header = "perl5db.pl version $VERSION";
 # if caller() is called from the package DB, it provides some
 # additional data.
 #
-# The array @{$main::{'_<'.$filename}} is the line-by-line contents of
-# $filename.
+# The array @{$main::{'_<'.$filename}} (herein called @dbline) is the
+# line-by-line contents of $filename.
 #
-# The hash %{'_<'.$filename} contains breakpoints and action (it is
-# keyed by line number), and individual entries are settable (as
-# opposed to the whole hash). Only true/false is important to the
-# interpreter, though the values used by perl5db.pl have the form
-# "$break_condition\0$action". Values are magical in numeric context.
+# The hash %{'_<'.$filename} (herein called %dbline) contains
+# breakpoints and action (it is keyed by line number), and individual
+# entries are settable (as opposed to the whole hash). Only true/false
+# is important to the interpreter, though the values used by
+# perl5db.pl have the form "$break_condition\0$action". Values are
+# magical in numeric context.
 #
 # The scalar ${'_<'.$filename} contains $filename.
 #
@@ -202,7 +206,7 @@ $header = "perl5db.pl version $VERSION";
 #       I<CreateTTY>       bits control attempts to create a new TTY on events:
 #                          1: on fork()   2: debugger is started inside debugger
 #                          4: on startup
-#   c) Code to auto-create a new TTY window on OS/2 (currently one one
+#   c) Code to auto-create a new TTY window on OS/2 (currently one
 #      extra window per session - need named pipes to have more...);
 #   d) Simplified interface for custom createTTY functions (with a backward
 #      compatibility hack); now returns the TTY name to use; return of ''
@@ -254,6 +258,16 @@ $header = "perl5db.pl version $VERSION";
 #   + Fixed warnings generated by "p 42" (Print expression)
 # Changes: 1.13: Jun 19, 2001 Scott.L.Miller@compaq.com
 #   + Added windowSize option 
+# Changes: 1.14: Oct  9, 2001 multiple
+#   + Clean up after itself on VMS (Charles Lane in 12385)
+#   + Adding "@ file" syntax (Peter Scott in 12014)
+#   + Debug reloading selfloaded stuff (Ilya Zakharevich in 11457)
+#   + $^S and other debugger fixes (Ilya Zakharevich in 11120)
+#   + Forgot a my() declaration (Ilya Zakharevich in 11085)
+# Changes: 1.15: Nov  6, 2001 Michael G Schwern <schwern@pobox.com>
+#   + Updated 1.14 change log
+#   + Added *dbline explainatory comments
+#   + Mentioning perldebguts man page
 ####################################################################
 
 # Needed for the statement after exec():
@@ -527,9 +541,8 @@ if ($notty) {
                                );
     if (!$OUT) { die "Unable to connect to remote host: $remoteport\n"; }
     $IN = $OUT;
-  } elsif ($CreateTTY & 4) {
-    create_IN_OUT(4);
   } else {
+    create_IN_OUT(4) if $CreateTTY & 4;
     if (defined $console) {
       my ($i, $o) = split /,/, $console;
       $o = $i unless defined $o;
@@ -721,7 +734,7 @@ EOP
                            next CMD;
                        } 
                    }
-                   $cmd =~ /^q$/ && ($fall_off_end = 1) && exit $?;
+                   $cmd =~ /^q$/ && ($fall_off_end = 1) && clean_ENV() && exit $?;
                    $cmd =~ /^h$/ && do {
                        print_help($help);
                        next CMD; };
@@ -2301,7 +2314,7 @@ sub TTY {
     }
     &warn("Too late to set TTY, enabled on next `R'!\n") if $term and @_;
     # Useful if done through PERLDB_OPTS:
-    $tty = shift if @_;
+    $console = $tty = shift if @_;
     $tty or $console;
 }
 
@@ -3008,6 +3021,14 @@ sub end_report {
   print $OUT "Use `q' to quit or `R' to restart.  `h q' for details.\n"
 }
 
+sub clean_ENV {
+    if (defined($ini_pids)) {
+        $ENV{PERLDB_PIDS} = $ini_pids;
+    } else {
+        delete($ENV{PERLDB_PIDS});
+    }
+}
+
 END {
   $finished = 1 if $inhibit_exit;      # So that some keys may be disabled.
   $fall_off_end = 1 unless $inhibit_exit;