Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
* [RFC] Change "set print frame-arguments"'s default to scalars
@ 2009-03-24 21:40 Joel Brobecker
  2009-03-25  0:10 ` Tom Tromey
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Joel Brobecker @ 2009-03-24 21:40 UTC (permalink / raw)
  To: gdb-patches

[-- Attachment #1: Type: text/plain, Size: 2477 bytes --]

This is a slight change in behavior that we made at AdaCore which
everyone seemed to have enjoyed.  The proposal is to change the default
for "set print frame-arguments" to "scalars" in order to unclutter
frames a bit.  For instance, I found the following example in our
testsuite. The debugger hit a breakpoing inside a function where
some of the arguments are structs. It looks like this:

> Breakpoint 7, sum_array_print (seed=10, linked_list1={next_index = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, values = {4, 6, 8, 10, 12, 14, 16, 18, 20, 22}, head = 0}, linked_list2={next_index = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, values = {8, 10, 12, 14, 16, 18, 20, 22, 24, 26}, head = 0}, linked_list3={next_index = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, values = {10, 12, 14, 16, 18, 20, 22, 24, 26, 28}, head = 0}, linked_list4={next_index = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, values = {20, 22, 24, 26, 28, 30, 32, 34, 36, 38}, head = 0}) at /home/brobecke/act/gdb-public/gdb/testsuite/gdb.base/call-ar-st.c:1105^M

(you should see what the above looks like when it's inside a backtrace)

The idea is that, most of the time, people are mostly interested
in knowing the name of the function where they stopped, and don't
care (yet!) about the value for their parameters. So simplifying
the output above to the following should be more productive most
of the time:

> Breakpoint 7, sum_array_print (seed=10, linked_list1=..., linked_list2=..., linked_list3=..., linked_list4=...) at /home/brobecke/act/gdb-public/gdb/testsuite/gdb.base/call-ar-st.c:1105^M

If the user needs to know the value of one of the non-scalar parameters,
he needs to use "print". From my personal experience, even if the parameter
value was printed in the frame, the frame is so cluttered at this point
that I would manaully get the parameter value with a print anyway.

To put things back into perspective, I think it's relatively uncommon
to pass structs by argument unless they are small. When bigger, I suspect
that the typical approach is to pass its address. So I don't think
this change would impact C users much. I'm not sure about C++, in particular
I'm not sure about how classes/objects are passed. I guess references,
which probably means little impact as well. In Ada, however, passing
structs as arguments is a common idiom, and changing the default seems
to have improved the life of many developers. I suspect that the same
will be true of Pascal users, but I can't say for sure.

Yay? Nay?

Thanks,
-- 
Joel

[-- Attachment #2: frame-args-scalars.diff --]
[-- Type: text/x-diff, Size: 718 bytes --]

commit ab83cdc6d0d12c1fcfd718e8c81038be77f02491
Author: Joel Brobecker <brobecker@adacore.com>
Date:   Tue Mar 24 14:10:08 2009 -0700

        Change the default value for "set print frame-arguments" to scalars.
    
        * stack.c (print_frame_arguments): Set initial value to "scalars".

diff --git a/gdb/stack.c b/gdb/stack.c
index f185841..814e271 100644
--- a/gdb/stack.c
+++ b/gdb/stack.c
@@ -58,7 +58,7 @@ void (*deprecated_selected_frame_level_changed_hook) (int);
 
 static const char *print_frame_arguments_choices[] =
   {"all", "scalars", "none", NULL};
-static const char *print_frame_arguments = "all";
+static const char *print_frame_arguments = "scalars";
 
 /* Prototypes for local functions. */
 

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2009-04-01 22:11 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-03-24 21:40 [RFC] Change "set print frame-arguments"'s default to scalars Joel Brobecker
2009-03-25  0:10 ` Tom Tromey
2009-03-25 21:44 ` Thiago Jung Bauermann
2009-03-27 17:34 ` Tom Tromey
2009-03-31 20:42   ` Doug Evans
2009-04-01 22:11 ` Joel Brobecker

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox