* gdbtk.c (gdbtk_init): Improve handling for errors in gdbtk.tcl
authorStu Grossman <grossman@cygnus>
Thu, 12 Jan 1995 01:09:34 +0000 (01:09 +0000)
committerStu Grossman <grossman@cygnus>
Thu, 12 Jan 1995 01:09:34 +0000 (01:09 +0000)
during startup.

gdb/ChangeLog
gdb/gdbtk.c

index 26749106999516703a8ab2b75a1ab76b47bd1166..d7c97ecf1054c918115e839eb648485c46e666ea 100644 (file)
@@ -1,3 +1,8 @@
+Wed Jan 11 17:06:55 1995  Stu Grossman  (grossman@cygnus.com)
+
+       * gdbtk.c (gdbtk_init):  Improve handling for errors in gdbtk.tcl
+       during startup.
+
 Wed Jan 11 17:53:26 1995  Rob Savoye  <rob@darkstar.cygnus.com>
 
        * array-rom.c: Add support for most commands.
index c97d2444bbb92cbb367a8a857c30e2e4f51d993c..ff9397fb8330e838ef8a43501c5ae1589fa6459e 100644 (file)
@@ -1096,7 +1096,6 @@ gdbtk_init ()
   Tcl_CreateCommand (interp, "gdb_eval", call_wrapper, gdb_eval, NULL);
 
   command_loop_hook = Tk_MainLoop;
-  fputs_unfiltered_hook = gdbtk_fputs;
   print_frame_info_listing_hook = null_routine;
   query_hook = gdbtk_query;
   flush_hook = gdbtk_flush;
@@ -1154,8 +1153,19 @@ gdbtk_init ()
     else
       gdbtk_filename = GDBTK_FILENAME;
 
+/* Defer setup of fputs_unfiltered_hook to near the end so that error messages
+   prior to this point go to stdout/stderr.  */
+
+  fputs_unfiltered_hook = gdbtk_fputs;
+
   if (Tcl_EvalFile (interp, gdbtk_filename) != TCL_OK)
-    error ("Failure reading %s: %s", gdbtk_filename, interp->result);
+    {
+      fputs_unfiltered_hook = NULL; /* Force errors to stdout/stderr */
+
+      fprintf_unfiltered (stderr, "%s:%d: %s\n", gdbtk_filename,
+                         interp->errorLine, interp->result);
+      error ("Stack trace:\n%s", Tcl_GetVar (interp, "errorInfo", 0));
+    }
 
   discard_cleanups (old_chain);
 }