This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
list/edit command on frame with available symtab
- From: Jason Kraftcheck <kraftche at cae dot wisc dot edu>
- To: gdb-patches at sources dot redhat dot com
- Date: Thu, 23 Feb 2006 12:40:11 -0600
- Subject: 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)