* [RFA, doc RFA] set print frame-arguments-raw on|off
@ 2013-06-30 0:37 Doug Evans
2013-06-30 14:58 ` Doug Evans
0 siblings, 1 reply; 8+ messages in thread
From: Doug Evans @ 2013-06-30 0:37 UTC (permalink / raw)
To: gdb-patches
Hi.
Sometimes it's nice to print stack frame arguments in raw form.
[And not just as one-offs, but as the default.]
I thought of extending "set print frame-arguments" into something like
none, raw-scalars, raw-all, scalars, all.
But I like this better: raw-vs-pretty is orthogonal to scalars-vs-all.
E.g., If we later extend "print frame-arguments" it'll be easier if raw-ness
is a separate parameter.
A later patch can add, e.g., /r (etc.) options to "bt" and "frame"
to override the default settings.
Ok to check in?
2013-06-29 Doug Evans <dje@google.com>
* stack.c (print_frame_arguments_raw): New static global.
(print_frame_arg): Set opts.raw from print_frame_arguments_raw.
(_initialize_stack): Add "print frame-arguments-raw" parameter.
* valprint.h (value_print_options): Improve comments.
doc/
* gdb.texinfo (Print Settings): Document "print frame-arguments-raw".
testsuite/
* gdb.python/py-frame-args.c: New file.
* gdb.python/py-frame-args.py: New file.
* gdb.python/py-frame-args.exp New file.
Index: stack.c
===================================================================
RCS file: /cvs/src/src/gdb/stack.c,v
retrieving revision 1.273
diff -u -p -r1.273 stack.c
--- stack.c 12 Jun 2013 12:16:47 -0000 1.273
+++ stack.c 29 Jun 2013 22:11:03 -0000
@@ -65,6 +65,9 @@ static const char *const print_frame_arg
{"all", "scalars", "none", NULL};
static const char *print_frame_arguments = "scalars";
+/* If non-zero, don't invoke pretty-printers for frame arguments. */
+static int print_frame_arguments_raw;
+
/* The possible choices of "set print entry-values", and the value
of this setting. */
@@ -277,6 +280,7 @@ print_frame_arg (const struct frame_arg
get_raw_print_options (&opts);
opts.deref_ref = 1;
+ opts.raw = print_frame_arguments_raw;
/* True in "summary" mode, false otherwise. */
opts.summary = !strcmp (print_frame_arguments, "scalars");
@@ -2644,6 +2648,15 @@ Usage: func <name>\n"));
_("Show printing of non-scalar frame arguments"),
NULL, NULL, NULL, &setprintlist, &showprintlist);
+ add_setshow_boolean_cmd ("frame-arguments-raw", no_class,
+ &print_frame_arguments_raw, _("\
+Set whether to print frame arguments in raw form."), _("\
+Show whether to print frame arguments in raw form."), _("\
+If set, frame arguments are printed in raw form, bypassing any\n\
+pretty-printers for that value."),
+ NULL, NULL,
+ &setprintlist, &showprintlist);
+
add_setshow_auto_boolean_cmd ("disassemble-next-line", class_stack,
&disassemble_next_line, _("\
Set whether to disassemble next source line or insn when execution stops."),
Index: valprint.h
===================================================================
RCS file: /cvs/src/src/gdb/valprint.h,v
retrieving revision 1.46
diff -u -p -r1.46 valprint.h
--- valprint.h 13 Mar 2013 18:34:54 -0000 1.46
+++ valprint.h 29 Jun 2013 22:11:03 -0000
@@ -81,10 +81,12 @@ struct value_print_options
share one flag, why not Pascal too? */
int pascal_static_field_print;
- /* Controls Python pretty-printing. */
+ /* If non-zero don't do Python pretty-printing. */
int raw;
- /* If nonzero, print the value in "summary" form. */
+ /* If nonzero, print the value in "summary" form.
+ If raw and summary are both non-zero, don't print non-scalar values
+ ("..." is printed instead). */
int summary;
/* If nonzero, when printing a pointer, print the symbol to which it
Index: doc/gdb.texinfo
===================================================================
RCS file: /cvs/src/src/gdb/doc/gdb.texinfo,v
retrieving revision 1.1099
diff -u -p -r1.1099 gdb.texinfo
--- doc/gdb.texinfo 26 Jun 2013 08:17:26 -0000 1.1099
+++ doc/gdb.texinfo 29 Jun 2013 22:11:03 -0000
@@ -9030,6 +9030,17 @@ thus speeding up the display of each Ada
@item show print frame-arguments
Show how the value of arguments should be displayed when printing a frame.
+@item set print frame-arguments-raw on
+Print frame arguments in raw, non pretty-printed, form.
+
+@item set print frame-arguments-raw off
+Print frame arguments in pretty-printed form, if there is a pretty-printer
+for the value (@pxref{Pretty Printing}).
+Otherwise print the value in raw form.
+
+@item show print frame-arguments-raw
+Show whether to print frame arguments in raw form.
+
@anchor{set print entry-values}
@item set print entry-values @var{value}
@kindex set print entry-values
Index: testsuite/gdb.python/py-frame-args.c
===================================================================
RCS file: testsuite/gdb.python/py-frame-args.c
diff -N testsuite/gdb.python/py-frame-args.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ testsuite/gdb.python/py-frame-args.c 29 Jun 2013 22:11:03 -0000
@@ -0,0 +1,60 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2013 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <string.h>
+
+struct s
+{
+ int m;
+};
+
+struct ss
+{
+ struct s a;
+ struct s b;
+};
+
+void
+init_s (struct s *s, int m)
+{
+ s->m = m;
+}
+
+void
+init_ss (struct ss *s, int a, int b)
+{
+ init_s (&s->a, a);
+ init_s (&s->b, b);
+}
+
+void
+foo (int x, struct ss ss)
+{
+ return; /* break-here */
+}
+
+int
+main ()
+{
+ struct ss ss;
+
+ init_ss (&ss, 1, 2);
+
+ foo (42, ss);
+
+ return 0;
+}
Index: testsuite/gdb.python/py-frame-args.exp
===================================================================
RCS file: testsuite/gdb.python/py-frame-args.exp
diff -N testsuite/gdb.python/py-frame-args.exp
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ testsuite/gdb.python/py-frame-args.exp 29 Jun 2013 22:11:03 -0000
@@ -0,0 +1,70 @@
+# Copyright (C) 2013 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+standard_testfile
+
+if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile}] } {
+ return -1
+}
+
+# Skip all tests if Python scripting is not enabled.
+if { [skip_python_tests] } { continue }
+
+if ![runto_main] {
+ return -1
+}
+
+set remote_python_file [remote_download host ${srcdir}/${subdir}/${testfile}.py]
+
+gdb_test_no_output "python exec (open ('${remote_python_file}').read ())"
+
+gdb_breakpoint [gdb_get_line_number "break-here"]
+gdb_continue_to_breakpoint "break-here" ".* break-here .*"
+
+# Test all combinations with raw off.
+
+gdb_test_no_output "set print frame-arguments-raw off"
+
+gdb_test_no_output "set print frame-arguments none"
+gdb_test "frame" ".*foo \\(x=\[.\]{3}, ss=\[.\]{3}\\).*" \
+ "frame pretty,none"
+
+gdb_test_no_output "set print frame-arguments scalars"
+gdb_test "frame" ".*foo \\(x=42, ss=super struct = {\[.\]{3}}\\).*" \
+ "frame pretty,scalars"
+
+gdb_test_no_output "set print frame-arguments all"
+gdb_test "frame" \
+ ".*foo \\(x=42, ss=super struct = {a = m=<1>, b = m=<2>}\\).*" \
+ "frame pretty,all"
+
+# Test all combinations with raw on.
+
+gdb_test_no_output "set print frame-arguments-raw on"
+
+gdb_test_no_output "set print frame-arguments none"
+gdb_test "frame" ".*foo \\(x=\[.\]{3}, ss=\[.\]{3}\\).*" \
+ "frame raw,none"
+
+gdb_test_no_output "set print frame-arguments scalars"
+gdb_test "frame" ".*foo \\(x=42, ss=\[.\]{3}\\).*" \
+ "frame raw,scalars"
+
+gdb_test_no_output "set print frame-arguments all"
+gdb_test "frame" \
+ ".*foo \\(x=42, ss={a = {m = 1}, b = {m = 2}}\\).*" \
+ "frame raw,all"
+
+remote_file host delete ${remote_python_file}
Index: testsuite/gdb.python/py-frame-args.py
===================================================================
RCS file: testsuite/gdb.python/py-frame-args.py
diff -N testsuite/gdb.python/py-frame-args.py
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ testsuite/gdb.python/py-frame-args.py 29 Jun 2013 22:11:03 -0000
@@ -0,0 +1,75 @@
+# Copyright (C) 2013 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+import re
+import gdb
+
+class pp_s (object):
+ def __init__(self, val):
+ self.val = val
+
+ def to_string(self):
+ m = self.val["m"]
+ return "m=<" + str(self.val["m"]) + ">"
+
+class pp_ss (object):
+ def __init__(self, val):
+ self.val = val
+
+ def to_string(self):
+ return "super struct"
+
+ def children (self):
+ yield 'a', self.val['a']
+ yield 'b', self.val['b']
+
+
+def lookup_function (val):
+ "Look-up and return a pretty-printer that can print val."
+
+ # Get the type.
+ type = val.type
+
+ # If it points to a reference, get the reference.
+ if type.code == gdb.TYPE_CODE_REF:
+ type = type.target ()
+
+ # Get the unqualified type, stripped of typedefs.
+ type = type.unqualified ().strip_typedefs ()
+
+ # Get the type name.
+ typename = type.tag
+ if typename == None:
+ return None
+
+ # Iterate over local dictionary of types to determine
+ # if a printer is registered for that type. Return an
+ # instantiation of the printer if found.
+ for function in pretty_printers_dict:
+ if function.match (typename):
+ return pretty_printers_dict[function] (val)
+
+ # Cannot find a pretty printer. Return None.
+ return None
+
+
+def register_pretty_printers ():
+ pretty_printers_dict[re.compile ('^s$')] = pp_s
+ pretty_printers_dict[re.compile ('^ss$')] = pp_ss
+
+pretty_printers_dict = {}
+
+register_pretty_printers ()
+gdb.pretty_printers.append (lookup_function)
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [RFA, doc RFA] set print frame-arguments-raw on|off
2013-06-30 0:37 [RFA, doc RFA] set print frame-arguments-raw on|off Doug Evans
@ 2013-06-30 14:58 ` Doug Evans
2013-06-30 15:17 ` Eli Zaretskii
0 siblings, 1 reply; 8+ messages in thread
From: Doug Evans @ 2013-06-30 14:58 UTC (permalink / raw)
To: gdb-patches
Doug Evans writes:
> Hi.
>
> Sometimes it's nice to print stack frame arguments in raw form.
> [And not just as one-offs, but as the default.]
>
> I thought of extending "set print frame-arguments" into something like
> none, raw-scalars, raw-all, scalars, all.
> But I like this better: raw-vs-pretty is orthogonal to scalars-vs-all.
> E.g., If we later extend "print frame-arguments" it'll be easier if raw-ness
> is a separate parameter.
Blech.
This time with a NEWS entry.
2013-06-29 Doug Evans <dje@google.com>
* NEWS: Mention "set print frame-arguments-raw".
* stack.c (print_frame_arguments_raw): New static global.
(print_frame_arg): Set opts.raw from print_frame_arguments_raw.
(_initialize_stack): Add "print frame-arguments-raw" parameter.
* valprint.h (value_print_options): Improve comments.
doc/
* gdb.texinfo (Print Settings): Document "print frame-arguments-raw".
testsuite/
* gdb.python/py-frame-args.c: New file.
* gdb.python/py-frame-args.py: New file.
* gdb.python/py-frame-args.exp New file.
Index: NEWS
===================================================================
RCS file: /cvs/src/src/gdb/NEWS,v
retrieving revision 1.605
diff -u -p -r1.605 NEWS
--- NEWS 26 Jun 2013 08:17:26 -0000 1.605
+++ NEWS 30 Jun 2013 03:02:56 -0000
@@ -34,6 +34,11 @@ maint set|show per-command symtab
* New options
+set print frame-arguments-raw
+show print frame-arguments-raw
+ Set/show whether to print frame arguments in raw mode,
+ not pretty-printed.
+
set remote trace-status-packet
show remote trace-status-packet
Set/show the use of remote protocol qTStatus packet.
Index: stack.c
===================================================================
RCS file: /cvs/src/src/gdb/stack.c,v
retrieving revision 1.273
diff -u -p -r1.273 stack.c
--- stack.c 12 Jun 2013 12:16:47 -0000 1.273
+++ stack.c 29 Jun 2013 22:11:03 -0000
@@ -65,6 +65,9 @@ static const char *const print_frame_arg
{"all", "scalars", "none", NULL};
static const char *print_frame_arguments = "scalars";
+/* If non-zero, don't invoke pretty-printers for frame arguments. */
+static int print_frame_arguments_raw;
+
/* The possible choices of "set print entry-values", and the value
of this setting. */
@@ -277,6 +280,7 @@ print_frame_arg (const struct frame_arg
get_raw_print_options (&opts);
opts.deref_ref = 1;
+ opts.raw = print_frame_arguments_raw;
/* True in "summary" mode, false otherwise. */
opts.summary = !strcmp (print_frame_arguments, "scalars");
@@ -2644,6 +2648,15 @@ Usage: func <name>\n"));
_("Show printing of non-scalar frame arguments"),
NULL, NULL, NULL, &setprintlist, &showprintlist);
+ add_setshow_boolean_cmd ("frame-arguments-raw", no_class,
+ &print_frame_arguments_raw, _("\
+Set whether to print frame arguments in raw form."), _("\
+Show whether to print frame arguments in raw form."), _("\
+If set, frame arguments are printed in raw form, bypassing any\n\
+pretty-printers for that value."),
+ NULL, NULL,
+ &setprintlist, &showprintlist);
+
add_setshow_auto_boolean_cmd ("disassemble-next-line", class_stack,
&disassemble_next_line, _("\
Set whether to disassemble next source line or insn when execution stops."),
Index: valprint.h
===================================================================
RCS file: /cvs/src/src/gdb/valprint.h,v
retrieving revision 1.46
diff -u -p -r1.46 valprint.h
--- valprint.h 13 Mar 2013 18:34:54 -0000 1.46
+++ valprint.h 29 Jun 2013 22:11:03 -0000
@@ -81,10 +81,12 @@ struct value_print_options
share one flag, why not Pascal too? */
int pascal_static_field_print;
- /* Controls Python pretty-printing. */
+ /* If non-zero don't do Python pretty-printing. */
int raw;
- /* If nonzero, print the value in "summary" form. */
+ /* If nonzero, print the value in "summary" form.
+ If raw and summary are both non-zero, don't print non-scalar values
+ ("..." is printed instead). */
int summary;
/* If nonzero, when printing a pointer, print the symbol to which it
Index: doc/gdb.texinfo
===================================================================
RCS file: /cvs/src/src/gdb/doc/gdb.texinfo,v
retrieving revision 1.1099
diff -u -p -r1.1099 gdb.texinfo
--- doc/gdb.texinfo 26 Jun 2013 08:17:26 -0000 1.1099
+++ doc/gdb.texinfo 29 Jun 2013 22:11:03 -0000
@@ -9030,6 +9030,17 @@ thus speeding up the display of each Ada
@item show print frame-arguments
Show how the value of arguments should be displayed when printing a frame.
+@item set print frame-arguments-raw on
+Print frame arguments in raw, non pretty-printed, form.
+
+@item set print frame-arguments-raw off
+Print frame arguments in pretty-printed form, if there is a pretty-printer
+for the value (@pxref{Pretty Printing}).
+Otherwise print the value in raw form.
+
+@item show print frame-arguments-raw
+Show whether to print frame arguments in raw form.
+
@anchor{set print entry-values}
@item set print entry-values @var{value}
@kindex set print entry-values
Index: testsuite/gdb.python/py-frame-args.c
===================================================================
RCS file: testsuite/gdb.python/py-frame-args.c
diff -N testsuite/gdb.python/py-frame-args.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ testsuite/gdb.python/py-frame-args.c 29 Jun 2013 22:11:03 -0000
@@ -0,0 +1,60 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2013 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <string.h>
+
+struct s
+{
+ int m;
+};
+
+struct ss
+{
+ struct s a;
+ struct s b;
+};
+
+void
+init_s (struct s *s, int m)
+{
+ s->m = m;
+}
+
+void
+init_ss (struct ss *s, int a, int b)
+{
+ init_s (&s->a, a);
+ init_s (&s->b, b);
+}
+
+void
+foo (int x, struct ss ss)
+{
+ return; /* break-here */
+}
+
+int
+main ()
+{
+ struct ss ss;
+
+ init_ss (&ss, 1, 2);
+
+ foo (42, ss);
+
+ return 0;
+}
Index: testsuite/gdb.python/py-frame-args.exp
===================================================================
RCS file: testsuite/gdb.python/py-frame-args.exp
diff -N testsuite/gdb.python/py-frame-args.exp
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ testsuite/gdb.python/py-frame-args.exp 29 Jun 2013 22:11:03 -0000
@@ -0,0 +1,70 @@
+# Copyright (C) 2013 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+standard_testfile
+
+if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile}] } {
+ return -1
+}
+
+# Skip all tests if Python scripting is not enabled.
+if { [skip_python_tests] } { continue }
+
+if ![runto_main] {
+ return -1
+}
+
+set remote_python_file [remote_download host ${srcdir}/${subdir}/${testfile}.py]
+
+gdb_test_no_output "python exec (open ('${remote_python_file}').read ())"
+
+gdb_breakpoint [gdb_get_line_number "break-here"]
+gdb_continue_to_breakpoint "break-here" ".* break-here .*"
+
+# Test all combinations with raw off.
+
+gdb_test_no_output "set print frame-arguments-raw off"
+
+gdb_test_no_output "set print frame-arguments none"
+gdb_test "frame" ".*foo \\(x=\[.\]{3}, ss=\[.\]{3}\\).*" \
+ "frame pretty,none"
+
+gdb_test_no_output "set print frame-arguments scalars"
+gdb_test "frame" ".*foo \\(x=42, ss=super struct = {\[.\]{3}}\\).*" \
+ "frame pretty,scalars"
+
+gdb_test_no_output "set print frame-arguments all"
+gdb_test "frame" \
+ ".*foo \\(x=42, ss=super struct = {a = m=<1>, b = m=<2>}\\).*" \
+ "frame pretty,all"
+
+# Test all combinations with raw on.
+
+gdb_test_no_output "set print frame-arguments-raw on"
+
+gdb_test_no_output "set print frame-arguments none"
+gdb_test "frame" ".*foo \\(x=\[.\]{3}, ss=\[.\]{3}\\).*" \
+ "frame raw,none"
+
+gdb_test_no_output "set print frame-arguments scalars"
+gdb_test "frame" ".*foo \\(x=42, ss=\[.\]{3}\\).*" \
+ "frame raw,scalars"
+
+gdb_test_no_output "set print frame-arguments all"
+gdb_test "frame" \
+ ".*foo \\(x=42, ss={a = {m = 1}, b = {m = 2}}\\).*" \
+ "frame raw,all"
+
+remote_file host delete ${remote_python_file}
Index: testsuite/gdb.python/py-frame-args.py
===================================================================
RCS file: testsuite/gdb.python/py-frame-args.py
diff -N testsuite/gdb.python/py-frame-args.py
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ testsuite/gdb.python/py-frame-args.py 29 Jun 2013 22:11:03 -0000
@@ -0,0 +1,75 @@
+# Copyright (C) 2013 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+import re
+import gdb
+
+class pp_s (object):
+ def __init__(self, val):
+ self.val = val
+
+ def to_string(self):
+ m = self.val["m"]
+ return "m=<" + str(self.val["m"]) + ">"
+
+class pp_ss (object):
+ def __init__(self, val):
+ self.val = val
+
+ def to_string(self):
+ return "super struct"
+
+ def children (self):
+ yield 'a', self.val['a']
+ yield 'b', self.val['b']
+
+
+def lookup_function (val):
+ "Look-up and return a pretty-printer that can print val."
+
+ # Get the type.
+ type = val.type
+
+ # If it points to a reference, get the reference.
+ if type.code == gdb.TYPE_CODE_REF:
+ type = type.target ()
+
+ # Get the unqualified type, stripped of typedefs.
+ type = type.unqualified ().strip_typedefs ()
+
+ # Get the type name.
+ typename = type.tag
+ if typename == None:
+ return None
+
+ # Iterate over local dictionary of types to determine
+ # if a printer is registered for that type. Return an
+ # instantiation of the printer if found.
+ for function in pretty_printers_dict:
+ if function.match (typename):
+ return pretty_printers_dict[function] (val)
+
+ # Cannot find a pretty printer. Return None.
+ return None
+
+
+def register_pretty_printers ():
+ pretty_printers_dict[re.compile ('^s$')] = pp_s
+ pretty_printers_dict[re.compile ('^ss$')] = pp_ss
+
+pretty_printers_dict = {}
+
+register_pretty_printers ()
+gdb.pretty_printers.append (lookup_function)
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [RFA, doc RFA] set print frame-arguments-raw on|off
2013-06-30 14:58 ` Doug Evans
@ 2013-06-30 15:17 ` Eli Zaretskii
2013-06-30 18:11 ` Doug Evans
0 siblings, 1 reply; 8+ messages in thread
From: Eli Zaretskii @ 2013-06-30 15:17 UTC (permalink / raw)
To: Doug Evans; +Cc: gdb-patches
> From: Doug Evans <dje@google.com>
> Date: Sat, 29 Jun 2013 20:12:37 -0700
>
> > Sometimes it's nice to print stack frame arguments in raw form.
> > [And not just as one-offs, but as the default.]
> >
> > I thought of extending "set print frame-arguments" into something like
> > none, raw-scalars, raw-all, scalars, all.
> > But I like this better: raw-vs-pretty is orthogonal to scalars-vs-all.
> > E.g., If we later extend "print frame-arguments" it'll be easier if raw-ness
> > is a separate parameter.
Thanks.
> diff -u -p -r1.605 NEWS
> --- NEWS 26 Jun 2013 08:17:26 -0000 1.605
> +++ NEWS 30 Jun 2013 03:02:56 -0000
> @@ -34,6 +34,11 @@ maint set|show per-command symtab
>
> * New options
>
> +set print frame-arguments-raw
> +show print frame-arguments-raw
> + Set/show whether to print frame arguments in raw mode,
> + not pretty-printed.
> +
This part is OK, although I'd suggest to say something more explicit,
like "... disregarding any defined pretty-printers."
> --- doc/gdb.texinfo 26 Jun 2013 08:17:26 -0000 1.1099
> +++ doc/gdb.texinfo 29 Jun 2013 22:11:03 -0000
> @@ -9030,6 +9030,17 @@ thus speeding up the display of each Ada
> @item show print frame-arguments
> Show how the value of arguments should be displayed when printing a frame.
>
> +@item set print frame-arguments-raw on
> +Print frame arguments in raw, non pretty-printed, form.
> +
> +@item set print frame-arguments-raw off
> +Print frame arguments in pretty-printed form, if there is a pretty-printer
> +for the value (@pxref{Pretty Printing}).
> +Otherwise print the value in raw form.
> +
> +@item show print frame-arguments-raw
> +Show whether to print frame arguments in raw form.
This is fine, but please state the default value of the option.
OK with those changes.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [RFA, doc RFA] set print frame-arguments-raw on|off
2013-06-30 15:17 ` Eli Zaretskii
@ 2013-06-30 18:11 ` Doug Evans
2013-07-17 19:26 ` Doug Evans
0 siblings, 1 reply; 8+ messages in thread
From: Doug Evans @ 2013-06-30 18:11 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: gdb-patches
On Sun, Jun 30, 2013 at 7:58 AM, Eli Zaretskii <eliz@gnu.org> wrote:
>> From: Doug Evans <dje@google.com>
>> Date: Sat, 29 Jun 2013 20:12:37 -0700
>>
>> > Sometimes it's nice to print stack frame arguments in raw form.
>> > [And not just as one-offs, but as the default.]
>> >
>> > I thought of extending "set print frame-arguments" into something like
>> > none, raw-scalars, raw-all, scalars, all.
>> > But I like this better: raw-vs-pretty is orthogonal to scalars-vs-all.
>> > E.g., If we later extend "print frame-arguments" it'll be easier if raw-ness
>> > is a separate parameter.
>
> Thanks.
>
>> diff -u -p -r1.605 NEWS
>> --- NEWS 26 Jun 2013 08:17:26 -0000 1.605
>> +++ NEWS 30 Jun 2013 03:02:56 -0000
>> @@ -34,6 +34,11 @@ maint set|show per-command symtab
>>
>> * New options
>>
>> +set print frame-arguments-raw
>> +show print frame-arguments-raw
>> + Set/show whether to print frame arguments in raw mode,
>> + not pretty-printed.
>> +
>
> This part is OK, although I'd suggest to say something more explicit,
> like "... disregarding any defined pretty-printers."
>
>> --- doc/gdb.texinfo 26 Jun 2013 08:17:26 -0000 1.1099
>> +++ doc/gdb.texinfo 29 Jun 2013 22:11:03 -0000
>> @@ -9030,6 +9030,17 @@ thus speeding up the display of each Ada
>> @item show print frame-arguments
>> Show how the value of arguments should be displayed when printing a frame.
>>
>> +@item set print frame-arguments-raw on
>> +Print frame arguments in raw, non pretty-printed, form.
>> +
>> +@item set print frame-arguments-raw off
>> +Print frame arguments in pretty-printed form, if there is a pretty-printer
>> +for the value (@pxref{Pretty Printing}).
>> +Otherwise print the value in raw form.
>> +
>> +@item show print frame-arguments-raw
>> +Show whether to print frame arguments in raw form.
>
> This is fine, but please state the default value of the option.
>
> OK with those changes.
Thanks. Will do.
Still need approval for the code part.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [RFA, doc RFA] set print frame-arguments-raw on|off
2013-06-30 18:11 ` Doug Evans
@ 2013-07-17 19:26 ` Doug Evans
2013-07-17 19:34 ` Eli Zaretskii
2013-07-17 19:50 ` Tom Tromey
0 siblings, 2 replies; 8+ messages in thread
From: Doug Evans @ 2013-07-17 19:26 UTC (permalink / raw)
To: Eli Zaretskii, gdb-patches, palves
Here is a revised version of "set print frame-arguments-raw".
It renames the option to "set print raw frame-arguments" to allow for
other things that we might want to control raw printing of.
Regression tested on amd64-linux.
Ok to check in?
There's one thing I'm not sure of:
which one of gdbcmd.h vs cli/cli-cmds.h to use?
They each declare the set/show list globals.
gdbcmd.h has a comment saying it's deprecated.
However, it defines maintenance_{set,show}_cmdlist whereas cli-cmds.h
does not (which I agree with to the extent that if I were to try to clean
this area up I would make a few changes, e.g., better separation of gdb
and cli-as-module, but they're beyond the scope of this patch).
2013-07-17 Doug Evans <dje@google.com>
* NEWS: Mention "set print raw frame-arguments".
* gdbcmd.h (setprintrawlist, showprintrawlist): Declare.
* stack.c (print_raw_frame_arguments): New static global.
(print_frame_arg): Set opts.raw from print_raw_frame_arguments.
(_initialize_stack): New command "set/show print raw frame-arguments".
* valprint.c (setprintrawlist, showprintrawlist): New globals.
(set_print_raw, show_print_raw): New functions.
(_initialize_valprint): New prefix command "set/show print raw".
* valprint.h (value_print_options): Improve comments.
doc/
* gdb.texinfo (Print Settings): Document "print raw frame-arguments".
testsuite/
* gdb.python/py-frame-args.c: New file.
* gdb.python/py-frame-args.py: New file.
* gdb.python/py-frame-args.exp New file.
Index: NEWS
===================================================================
RCS file: /cvs/src/src/gdb/NEWS,v
retrieving revision 1.605
diff -u -p -r1.605 NEWS
--- NEWS 26 Jun 2013 08:17:26 -0000 1.605
+++ NEWS 17 Jul 2013 19:13:20 -0000
@@ -34,6 +34,11 @@ maint set|show per-command symtab
* New options
+set print raw frame-arguments
+show print raw frame-arguments
+ Set/show whether to print frame arguments in raw mode,
+ disregarding any defined pretty-printers.
+
set remote trace-status-packet
show remote trace-status-packet
Set/show the use of remote protocol qTStatus packet.
Index: gdbcmd.h
===================================================================
RCS file: /cvs/src/src/gdb/gdbcmd.h,v
retrieving revision 1.28
diff -u -p -r1.28 gdbcmd.h
--- gdbcmd.h 1 Jan 2013 06:32:44 -0000 1.28
+++ gdbcmd.h 17 Jul 2013 19:13:20 -0000
@@ -111,6 +111,10 @@ extern struct cmd_list_element *setprint
extern struct cmd_list_element *showprintlist;
+extern struct cmd_list_element *setprintrawlist;
+
+extern struct cmd_list_element *showprintrawlist;
+
extern struct cmd_list_element *setprinttypelist;
extern struct cmd_list_element *showprinttypelist;
Index: stack.c
===================================================================
RCS file: /cvs/src/src/gdb/stack.c,v
retrieving revision 1.275
diff -u -p -r1.275 stack.c
--- stack.c 9 Jul 2013 16:57:09 -0000 1.275
+++ stack.c 17 Jul 2013 19:13:20 -0000
@@ -65,6 +66,9 @@ static const char *const print_frame_arg
{"all", "scalars", "none", NULL};
static const char *print_frame_arguments = "scalars";
+/* If non-zero, don't invoke pretty-printers for frame arguments. */
+static int print_raw_frame_arguments;
+
/* The possible choices of "set print entry-values", and the value
of this setting. */
@@ -277,6 +281,7 @@ print_frame_arg (const struct frame_arg
get_no_prettyformat_print_options (&opts);
opts.deref_ref = 1;
+ opts.raw = print_raw_frame_arguments;
/* True in "summary" mode, false otherwise. */
opts.summary = !strcmp (print_frame_arguments, "scalars");
@@ -2640,6 +2645,15 @@ Usage: func <name>\n"));
_("Show printing of non-scalar frame arguments"),
NULL, NULL, NULL, &setprintlist, &showprintlist);
+ add_setshow_boolean_cmd ("frame-arguments", no_class,
+ &print_raw_frame_arguments, _("\
+Set whether to print frame arguments in raw form."), _("\
+Show whether to print frame arguments in raw form."), _("\
+If set, frame arguments are printed in raw form, bypassing any\n\
+pretty-printers for that value."),
+ NULL, NULL,
+ &setprintrawlist, &showprintrawlist);
+
add_setshow_auto_boolean_cmd ("disassemble-next-line", class_stack,
&disassemble_next_line, _("\
Set whether to disassemble next source line or insn when execution stops."),
Index: valprint.c
===================================================================
RCS file: /cvs/src/src/gdb/valprint.c,v
retrieving revision 1.137
diff -u -p -r1.137 valprint.c
--- valprint.c 9 Jul 2013 16:57:09 -0000 1.137
+++ valprint.c 17 Jul 2013 19:13:20 -0000
@@ -76,6 +77,9 @@ struct converted_character
typedef struct converted_character converted_character_d;
DEF_VEC_O (converted_character_d);
+/* Command lists for set/show print raw. */
+struct cmd_list_element *setprintrawlist;
+struct cmd_list_element *showprintrawlist;
/* Prototypes for local functions */
@@ -2686,6 +2690,21 @@ show_print (char *args, int from_tty)
{
cmd_show_list (showprintlist, from_tty, "");
}
+
+static void
+set_print_raw (char *arg, int from_tty)
+{
+ printf_unfiltered (
+ "\"set print raw\" must be followed by the name of a \"print raw\" subcommand.\n");
+ help_list (setprintrawlist, "set print raw ", -1, gdb_stdout);
+}
+
+static void
+show_print_raw (char *args, int from_tty)
+{
+ cmd_show_list (showprintrawlist, from_tty, "");
+}
+
\f
void
_initialize_valprint (void)
@@ -2703,6 +2722,14 @@ _initialize_valprint (void)
add_alias_cmd ("p", "print", no_class, 1, &showlist);
add_alias_cmd ("pr", "print", no_class, 1, &showlist);
+ add_prefix_cmd ("raw", no_class, set_print_raw,
+ _("\
+Generic command for setting what things to print in \"raw\" mode."),
+ &setprintrawlist, "set print raw ", 0, &setprintlist);
+ add_prefix_cmd ("raw", no_class, show_print_raw,
+ _("Generic command for showing \"print raw\" settings."),
+ &showprintrawlist, "show print raw ", 0, &showprintlist);
+
add_setshow_uinteger_cmd ("elements", no_class,
&user_print_options.print_max, _("\
Set limit on string chars or array elements to print."), _("\
Index: valprint.h
===================================================================
RCS file: /cvs/src/src/gdb/valprint.h,v
retrieving revision 1.47
diff -u -p -r1.47 valprint.h
--- valprint.h 9 Jul 2013 16:57:09 -0000 1.47
+++ valprint.h 17 Jul 2013 19:13:20 -0000
@@ -81,10 +81,12 @@ struct value_print_options
share one flag, why not Pascal too? */
int pascal_static_field_print;
- /* Controls Python pretty-printing. */
+ /* If non-zero don't do Python pretty-printing. */
int raw;
- /* If nonzero, print the value in "summary" form. */
+ /* If nonzero, print the value in "summary" form.
+ If raw and summary are both non-zero, don't print non-scalar values
+ ("..." is printed instead). */
int summary;
/* If nonzero, when printing a pointer, print the symbol to which it
Index: doc/gdb.texinfo
===================================================================
RCS file: /cvs/src/src/gdb/doc/gdb.texinfo,v
retrieving revision 1.1100
diff -u -p -r1.1100 gdb.texinfo
--- doc/gdb.texinfo 2 Jul 2013 16:58:32 -0000 1.1100
+++ doc/gdb.texinfo 17 Jul 2013 19:13:20 -0000
@@ -9030,6 +9030,18 @@ thus speeding up the display of each Ada
@item show print frame-arguments
Show how the value of arguments should be displayed when printing a frame.
+@item set print raw frame-arguments on
+Print frame arguments in raw, non pretty-printed, form.
+
+@item set print raw frame-arguments off
+Print frame arguments in pretty-printed form, if there is a pretty-printer
+for the value (@pxref{Pretty Printing}),
+otherwise print the value in raw form.
+This is the default.
+
+@item show print raw frame-arguments
+Show whether to print frame arguments in raw form.
+
@anchor{set print entry-values}
@item set print entry-values @var{value}
@kindex set print entry-values
Index: testsuite/gdb.python/py-frame-args.c
===================================================================
RCS file: testsuite/gdb.python/py-frame-args.c
diff -N testsuite/gdb.python/py-frame-args.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ testsuite/gdb.python/py-frame-args.c 17 Jul 2013 19:13:20 -0000
@@ -0,0 +1,60 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2013 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <string.h>
+
+struct s
+{
+ int m;
+};
+
+struct ss
+{
+ struct s a;
+ struct s b;
+};
+
+void
+init_s (struct s *s, int m)
+{
+ s->m = m;
+}
+
+void
+init_ss (struct ss *s, int a, int b)
+{
+ init_s (&s->a, a);
+ init_s (&s->b, b);
+}
+
+void
+foo (int x, struct ss ss)
+{
+ return; /* break-here */
+}
+
+int
+main ()
+{
+ struct ss ss;
+
+ init_ss (&ss, 1, 2);
+
+ foo (42, ss);
+
+ return 0;
+}
Index: testsuite/gdb.python/py-frame-args.exp
===================================================================
RCS file: testsuite/gdb.python/py-frame-args.exp
diff -N testsuite/gdb.python/py-frame-args.exp
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ testsuite/gdb.python/py-frame-args.exp 17 Jul 2013 19:13:20 -0000
@@ -0,0 +1,70 @@
+# Copyright (C) 2013 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+standard_testfile
+
+if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile}] } {
+ return -1
+}
+
+# Skip all tests if Python scripting is not enabled.
+if { [skip_python_tests] } { continue }
+
+if ![runto_main] {
+ return -1
+}
+
+set remote_python_file [remote_download host ${srcdir}/${subdir}/${testfile}.py]
+
+gdb_test_no_output "python exec (open ('${remote_python_file}').read ())"
+
+gdb_breakpoint [gdb_get_line_number "break-here"]
+gdb_continue_to_breakpoint "break-here" ".* break-here .*"
+
+# Test all combinations with raw off.
+
+gdb_test_no_output "set print raw frame-arguments off"
+
+gdb_test_no_output "set print frame-arguments none"
+gdb_test "frame" ".*foo \\(x=\[.\]{3}, ss=\[.\]{3}\\).*" \
+ "frame pretty,none"
+
+gdb_test_no_output "set print frame-arguments scalars"
+gdb_test "frame" ".*foo \\(x=42, ss=super struct = {\[.\]{3}}\\).*" \
+ "frame pretty,scalars"
+
+gdb_test_no_output "set print frame-arguments all"
+gdb_test "frame" \
+ ".*foo \\(x=42, ss=super struct = {a = m=<1>, b = m=<2>}\\).*" \
+ "frame pretty,all"
+
+# Test all combinations with raw on.
+
+gdb_test_no_output "set print raw frame-arguments on"
+
+gdb_test_no_output "set print frame-arguments none"
+gdb_test "frame" ".*foo \\(x=\[.\]{3}, ss=\[.\]{3}\\).*" \
+ "frame raw,none"
+
+gdb_test_no_output "set print frame-arguments scalars"
+gdb_test "frame" ".*foo \\(x=42, ss=\[.\]{3}\\).*" \
+ "frame raw,scalars"
+
+gdb_test_no_output "set print frame-arguments all"
+gdb_test "frame" \
+ ".*foo \\(x=42, ss={a = {m = 1}, b = {m = 2}}\\).*" \
+ "frame raw,all"
+
+remote_file host delete ${remote_python_file}
Index: testsuite/gdb.python/py-frame-args.py
===================================================================
RCS file: testsuite/gdb.python/py-frame-args.py
diff -N testsuite/gdb.python/py-frame-args.py
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ testsuite/gdb.python/py-frame-args.py 17 Jul 2013 19:13:20 -0000
@@ -0,0 +1,75 @@
+# Copyright (C) 2013 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+import re
+import gdb
+
+class pp_s (object):
+ def __init__(self, val):
+ self.val = val
+
+ def to_string(self):
+ m = self.val["m"]
+ return "m=<" + str(self.val["m"]) + ">"
+
+class pp_ss (object):
+ def __init__(self, val):
+ self.val = val
+
+ def to_string(self):
+ return "super struct"
+
+ def children (self):
+ yield 'a', self.val['a']
+ yield 'b', self.val['b']
+
+
+def lookup_function (val):
+ "Look-up and return a pretty-printer that can print val."
+
+ # Get the type.
+ type = val.type
+
+ # If it points to a reference, get the reference.
+ if type.code == gdb.TYPE_CODE_REF:
+ type = type.target ()
+
+ # Get the unqualified type, stripped of typedefs.
+ type = type.unqualified ().strip_typedefs ()
+
+ # Get the type name.
+ typename = type.tag
+ if typename == None:
+ return None
+
+ # Iterate over local dictionary of types to determine
+ # if a printer is registered for that type. Return an
+ # instantiation of the printer if found.
+ for function in pretty_printers_dict:
+ if function.match (typename):
+ return pretty_printers_dict[function] (val)
+
+ # Cannot find a pretty printer. Return None.
+ return None
+
+
+def register_pretty_printers ():
+ pretty_printers_dict[re.compile ('^s$')] = pp_s
+ pretty_printers_dict[re.compile ('^ss$')] = pp_ss
+
+pretty_printers_dict = {}
+
+register_pretty_printers ()
+gdb.pretty_printers.append (lookup_function)
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [RFA, doc RFA] set print frame-arguments-raw on|off
2013-07-17 19:26 ` Doug Evans
@ 2013-07-17 19:34 ` Eli Zaretskii
2013-07-17 19:50 ` Tom Tromey
1 sibling, 0 replies; 8+ messages in thread
From: Eli Zaretskii @ 2013-07-17 19:34 UTC (permalink / raw)
To: Doug Evans; +Cc: gdb-patches, palves
> From: Doug Evans <dje@google.com>
> Date: Wed, 17 Jul 2013 12:26:45 -0700
>
> Here is a revised version of "set print frame-arguments-raw".
> It renames the option to "set print raw frame-arguments" to allow for
> other things that we might want to control raw printing of.
>
> Regression tested on amd64-linux.
>
> Ok to check in?
OK for the documentation parts.
Thanks.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [RFA, doc RFA] set print frame-arguments-raw on|off
2013-07-17 19:26 ` Doug Evans
2013-07-17 19:34 ` Eli Zaretskii
@ 2013-07-17 19:50 ` Tom Tromey
2013-07-17 19:54 ` Doug Evans
1 sibling, 1 reply; 8+ messages in thread
From: Tom Tromey @ 2013-07-17 19:50 UTC (permalink / raw)
To: Doug Evans; +Cc: Eli Zaretskii, gdb-patches, palves
>>>>> "Doug" == Doug Evans <dje@google.com> writes:
Doug> Here is a revised version of "set print frame-arguments-raw".
Doug> It renames the option to "set print raw frame-arguments" to allow for
Doug> other things that we might want to control raw printing of.
Looks good to me.
It might be nice to allow this as an argument to "bt" as well, for
one-off uses.
Doug> There's one thing I'm not sure of:
Doug> which one of gdbcmd.h vs cli/cli-cmds.h to use?
Doug> They each declare the set/show list globals.
Doug> gdbcmd.h has a comment saying it's deprecated.
Doug> However, it defines maintenance_{set,show}_cmdlist whereas cli-cmds.h
Doug> does not (which I agree with to the extent that if I were to try to clean
Doug> this area up I would make a few changes, e.g., better separation of gdb
Doug> and cli-as-module, but they're beyond the scope of this patch).
I think cli/cli-cmds.h is preferable for "pure CLI" things.
IMNSHO any public object ought to have a single declaration in a single
header file. Any kind of duplication here is bad.
Tom
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [RFA, doc RFA] set print frame-arguments-raw on|off
2013-07-17 19:50 ` Tom Tromey
@ 2013-07-17 19:54 ` Doug Evans
0 siblings, 0 replies; 8+ messages in thread
From: Doug Evans @ 2013-07-17 19:54 UTC (permalink / raw)
To: Tom Tromey; +Cc: Eli Zaretskii, gdb-patches, Pedro Alves
On Wed, Jul 17, 2013 at 12:50 PM, Tom Tromey <tromey@redhat.com> wrote:
>>>>>> "Doug" == Doug Evans <dje@google.com> writes:
>
> Doug> Here is a revised version of "set print frame-arguments-raw".
> Doug> It renames the option to "set print raw frame-arguments" to allow for
> Doug> other things that we might want to control raw printing of.
>
> Looks good to me.
>
> It might be nice to allow this as an argument to "bt" as well, for
> one-off uses.
Yeah, I was leaving that for a later pass.
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2013-07-17 19:54 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-06-30 0:37 [RFA, doc RFA] set print frame-arguments-raw on|off Doug Evans
2013-06-30 14:58 ` Doug Evans
2013-06-30 15:17 ` Eli Zaretskii
2013-06-30 18:11 ` Doug Evans
2013-07-17 19:26 ` Doug Evans
2013-07-17 19:34 ` Eli Zaretskii
2013-07-17 19:50 ` Tom Tromey
2013-07-17 19:54 ` Doug Evans
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox