This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

list/edit command on frame with available symtab


If there is no symtab for the current frame, traverse up the stack
looking for a frame with a symtab.  This may at first seem like a
gratuitous feature (and perhaps it is), but I find it is convenient when
working with an application that uses third-party libraries.  Typically
whatever code I'm working on has debug symbols while whatever
third-party code I'm calling does not.  And I'm much more interested in
seeing where the process was in my code at the time a fault occurred.  I
don't think this change will be a problem for anyone, as the previous
behavior was to print an error if there was no symtab.


2006-02-23  Jason Kraftcheck  <kraftche@cae.wisc.edu>

	* stack.c (set_current_sal_from_frame): If list or edit command
        is invoked for a frame without a symtab, move up the stack to
        the neareast frame with a symtab.


diff -upr gdb-6.4/gdb/stack.c mod/gdb/stack.c
--- gdb-6.4/gdb/stack.c	2005-08-18 08:26:41.000000000 -0500
+++ mod/gdb/stack.c	2006-02-23 11:55:12.481291546 -0600
@@ -377,8 +377,18 @@ static void
 set_current_sal_from_frame (struct frame_info *frame, int center)
 {
   struct symtab_and_line sal;
+  int count;

   find_frame_sal (frame, &sal);
+  while (!sal.symtab)
+    {
+      count = 1;
+      frame = find_relative_frame( frame, &count );
+      if (count)
+        break;
+      find_frame_sal (frame, &sal);
+    }
+
   if (sal.symtab)
     {
       if (center)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]