public inbox for gdb-testers@sourceware.org help / color / mirror / Atom feed
From: gdb-buildbot@sergiodj.net To: gdb-testers@sourceware.org Subject: [binutils-gdb] Implement 'print -raw-values' and 'set print raw-values on|off' Date: Wed, 11 Dec 2019 19:24:00 -0000 [thread overview] Message-ID: <d8edc8b768f0f611088161161392e1075134d635@gdb-build> (raw) *** TEST RESULTS FOR COMMIT d8edc8b768f0f611088161161392e1075134d635 *** commit d8edc8b768f0f611088161161392e1075134d635 Author: Philippe Waroquiers <philippe.waroquiers@skynet.be> AuthorDate: Wed Aug 7 20:50:54 2019 +0200 Commit: Philippe Waroquiers <philippe.waroquiers@skynet.be> CommitDate: Wed Dec 11 04:31:05 2019 +0100 Implement 'print -raw-values' and 'set print raw-values on|off' The option framework documentation was speaking about a 'print -raw' option, but this option does not exist. This patch implements -raw-values option that tells to ignore the active pretty printers when printing a value. As we already have -raw-frame-arguments, I thought -raw-values was more clear, in particular to differentiate set print raw-values and set print raw-frame-arguments. gdb/doc/ChangeLog 2019-12-11 Philippe Waroquiers <philippe.waroquiers@skynet.be> * gdb.texinfo (Command Options): Use -p and -pretty in the example, as -r is ambiguous. Update the print - TAB TAB completion result. (Data): Document new option -raw-values. Use -p and -pretty in the example, as -r is ambiguous. (Print Settings): Document set print raw values. (Pretty-Printer Commands): Document interaction between enabled pretty printers and -raw-values/-raw-frame-arguments. gdb/ChangeLog 2019-12-11 Philippe Waroquiers <philippe.waroquiers@skynet.be> * NEWS: Document -raw-values option and the related setting commands. * printcmd.c (print_command_parse_format): Do not set opts->raw off, only set it on when /r is given. * valprint.c (value_print_option_defs): New element raw-values. * Makefile.in: Add the new file. gdb/testsuite/ChangeLog 2019-12-11 Philippe Waroquiers <philippe.waroquiers@skynet.be> * gdb.base/options.exp: Add -raw-values in the print completion list. * gdb.python/py-prettyprint.exp: Add tests for -raw-values. diff --git a/gdb/ChangeLog b/gdb/ChangeLog index c4e8109b7c..d32e755517 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,11 @@ +2019-12-11 Philippe Waroquiers <philippe.waroquiers@skynet.be> + + * NEWS: Document -raw-values option and the related setting commands. + * printcmd.c (print_command_parse_format): Do not set opts->raw off, + only set it on when /r is given. + * valprint.c (value_print_option_defs): New element raw-values. + * Makefile.in: Add the new file. + 2019-12-10 Christian Biesinger <cbiesinger@google.com> * gdbsupport/safe-strerror.c: Supress the unused function warning diff --git a/gdb/NEWS b/gdb/NEWS index 372a83aa17..3c378df6e6 100644 --- a/gdb/NEWS +++ b/gdb/NEWS @@ -148,6 +148,12 @@ show print max-depth The default max-depth is 20, but this can be set to unlimited to get the old behavior back. +set print raw-values [on|off] +show print raw-values + By default, GDB applies the enabled pretty printers when printing a + value. This allows to ignore the enabled pretty printers for a series + of commands. The default is 'off'. + set logging debugredirect [on|off] By default, GDB debug output will go to both the terminal and the logfile. Set if you want debug output to go only to the log file. @@ -303,6 +309,7 @@ focus, winheight, +, -, >, < -null-stop [on|off] -object [on|off] -pretty [on|off] + -raw-values [on|off] -repeats NUMBER|unlimited -static-members [on|off] -symbol [on|off] @@ -347,11 +354,11 @@ focus, winheight, +, -, >, < "on" if omitted. This allows writing compact command invocations, like for example: - (gdb) p -r -p -o 0 -- *myptr + (gdb) p -ra -p -o 0 -- *myptr The above is equivalent to: - (gdb) print -raw -pretty -object off -- *myptr + (gdb) print -raw-values -pretty -object off -- *myptr ** The "info types" command now supports the '-q' flag to disable printing of some header information in a similar fashion to "info diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog index 57ad682c72..6db33e1781 100644 --- a/gdb/doc/ChangeLog +++ b/gdb/doc/ChangeLog @@ -1,3 +1,13 @@ +2019-12-11 Philippe Waroquiers <philippe.waroquiers@skynet.be> + + * gdb.texinfo (Command Options): Use -p and -pretty in the example, + as -r is ambiguous. Update the print - TAB TAB completion result. + (Data): Document new option -raw-values. Use -p and -pretty in the + example, as -r is ambiguous. + (Print Settings): Document set print raw values. + (Pretty-Printer Commands): Document interaction between enabled + pretty printers and -raw-values/-raw-frame-arguments. + 2019-12-10 Tom Tromey <tom@tromey.com> * python.texi (gdb.prompt): Use correct quotes in example. diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index 544e632a46..a4e2c4ff12 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -1949,8 +1949,8 @@ Some commands take raw input as argument. For example, the print command processes arbitrary expressions in any of the languages supported by @value{GDBN}. With such commands, because raw input may start with a leading dash that would be confused with an option or any -of its abbreviations, e.g.@: @code{print -r} (short for @code{print --raw} or printing negative @code{r}?), if you specify any command +of its abbreviations, e.g.@: @code{print -p} (short for @code{print +-pretty} or printing negative @code{p}?), if you specify any command option, then you must use a double-dash (@code{--}) delimiter to indicate the end of options. @@ -1976,10 +1976,10 @@ on @code{-} after the command name. For example: @smallexample (@value{GDBP}) print -@key{TAB}@key{TAB} --address -max-depth -repeats -vtbl --array -null-stop -static-members --array-indexes -object -symbol --elements -pretty -union +-address -max-depth -raw-values -union +-array -null-stop -repeats -vtbl +-array-indexes -object -static-members +-elements -pretty -symbol @end smallexample Completion will in some cases guide you with a suggestion of what kind @@ -9646,6 +9646,11 @@ Set printing C@t{++} virtual function tables. Related setting: Set pretty formatting of structures. Related setting: @ref{set print pretty}. +@item -raw-values [@code{on}|@code{off}] +Set whether to print values in raw form, bypassing any +pretty-printers for that value. Related setting: @ref{set print +raw-values}. + @item -repeats @var{number-of-repeats}|@code{unlimited} Set threshold for repeated print elements. @code{unlimited} causes all elements to be individually printed. Related setting: @ref{set @@ -9673,17 +9678,17 @@ may look like options (including abbreviations), if you specify any command option, then you must use a double dash (@code{--}) to mark the end of option processing. -For example, this prints the value of the @code{-r} expression: +For example, this prints the value of the @code{-p} expression: @smallexample -(@value{GDBP}) print -r +(@value{GDBP}) print -p @end smallexample While this repeats the last value in the value history (see below) -with the @code{-raw} option in effect: +with the @code{-pretty} option in effect: @smallexample -(@value{GDBP}) print -r -- +(@value{GDBP}) print -p -- @end smallexample Here is an example including both on option and an expression: @@ -11274,6 +11279,21 @@ This is the default format. @item show print pretty Show which format @value{GDBN} is using to print structures. +@anchor{set print raw-values} +@item set print raw-values on +Print values in raw form, without applying the pretty +printers for the value. + +@item set print raw-values off +Print values in pretty-printed form, if there is a pretty-printer +for the value (@pxref{Pretty Printing}), +otherwise print the value in raw form. + +The default setting is ``off''. + +@item show print raw-values +Show whether to print values in raw form. + @item set print sevenbit-strings on @cindex eight-bit characters in strings @cindex octal escapes in strings @@ -11613,6 +11633,18 @@ library2.so: Note that for @code{bar} the entire printer can be disabled, as can each individual subprinter. +Printing values and frame arguments is done by default using +the enabled pretty printers. + +The print option @code{-raw-values} and @value{GDBN} setting +@code{set print raw-values} (@pxref{set print raw-values}) can be +used to print values without applying the enabled pretty printers. + +Similarly, the backtrace option @code{-raw-frame-arguments} and +@value{GDBN} setting @code{set print raw-frame-arguments} +(@pxref{set print raw-frame-arguments}) can be used to ignore the +enabled pretty printers when printing frame argument values. + @node Value History @section Value History diff --git a/gdb/printcmd.c b/gdb/printcmd.c index f7674cf1d0..480e7f2239 100644 --- a/gdb/printcmd.c +++ b/gdb/printcmd.c @@ -1152,6 +1152,9 @@ print_command_parse_format (const char **expp, const char *cmdname, { const char *exp = *expp; + /* opts->raw value might already have been set by 'set print raw-values' + or by using 'print -raw-values'. + So, do not set opts->raw to 0, only set it to 1 if /r is given. */ if (exp && *exp == '/') { format_data fmt; @@ -1162,12 +1165,11 @@ print_command_parse_format (const char **expp, const char *cmdname, last_format = fmt.format; opts->format = fmt.format; - opts->raw = fmt.raw; + opts->raw = opts->raw || fmt.raw; } else { opts->format = 0; - opts->raw = 0; } *expp = exp; diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 8b846a13e8..17d4993888 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2019-12-11 Philippe Waroquiers <philippe.waroquiers@skynet.be> + + * gdb.base/options.exp: Add -raw-values in the print completion list. + * gdb.python/py-prettyprint.exp: Add tests for -raw-values. + 2019-12-10 Kevin Buettner <kevinb@redhat.com> * gdb.threads/omp-par-scope.c: New file. diff --git a/gdb/testsuite/gdb.base/options.exp b/gdb/testsuite/gdb.base/options.exp index 7a18fe936b..78ddc26577 100644 --- a/gdb/testsuite/gdb.base/options.exp +++ b/gdb/testsuite/gdb.base/options.exp @@ -168,6 +168,7 @@ proc_with_prefix test-print {{prefix ""}} { "-null-stop" "-object" "-pretty" + "-raw-values" "-repeats" "-static-members" "-symbol" diff --git a/gdb/testsuite/gdb.python/py-prettyprint.exp b/gdb/testsuite/gdb.python/py-prettyprint.exp index 82e7e65031..e9ad5616ee 100644 --- a/gdb/testsuite/gdb.python/py-prettyprint.exp +++ b/gdb/testsuite/gdb.python/py-prettyprint.exp @@ -199,3 +199,24 @@ gdb_test_no_output "python enable_lookup_function ()" gdb_test "print ss" " = a=< a=<1> b=<$hex>> b=< a=<2> b=<$hex>>" \ "print ss enabled #2" + +gdb_test "print -raw-values -- ss" " = {a = {a = 1, b = $hex}, b = {a = 2, b = $hex}}" \ + "print -raw-values -- ss" + +gdb_test "print -raw-values on -- ss" " = {a = {a = 1, b = $hex}, b = {a = 2, b = $hex}}" \ + "print -raw-values on -- ss" + +gdb_test "with print raw-values -- print ss" " = {a = {a = 1, b = $hex}, b = {a = 2, b = $hex}}" \ + "with print raw-values -- print ss" + +# Test interaction between /r format and raw-values option: +# When /r is not present, raw-values option tells to bypass (or not) the pretty printers. +# (these cases are tested above). +# When /r is present, it must override the option raw-values off. +gdb_test "print /r ss" " = {a = {a = 1, b = $hex}, b = {a = 2, b = $hex}}" + +gdb_test "with print raw-values off -- print /r ss" " = {a = {a = 1, b = $hex}, b = {a = 2, b = $hex}}" + +gdb_test "print -raw-values off -- /r ss" " = {a = {a = 1, b = $hex}, b = {a = 2, b = $hex}}" + + diff --git a/gdb/valprint.c b/gdb/valprint.c index 1e3071b432..4f80ee0dfe 100644 --- a/gdb/valprint.c +++ b/gdb/valprint.c @@ -3198,6 +3198,16 @@ Use \"unlimited\" to print the complete structure.") NULL, /* help_doc */ }, + boolean_option_def { + "raw-values", + [] (value_print_options *opt) { return &opt->raw; }, + NULL, /* show_cmd_cb */ + N_("Set whether to print values in raw form."), + N_("Show whether to print values in raw form."), + N_("If set, values are printed in raw form, bypassing any\n\ +pretty-printers for that value.") + }, + uinteger_option_def { "repeats", [] (value_print_options *opt) { return &opt->repeat_count_threshold; },
next reply other threads:[~2019-12-11 19:18 UTC|newest] Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-12-11 19:24 gdb-buildbot [this message] 2019-12-11 19:18 ` Failures on Ubuntu-Aarch64-m64, branch master gdb-buildbot 2019-12-11 19:39 ` Failures on Ubuntu-Aarch64-native-extended-gdbserver-m64, " gdb-buildbot 2019-12-11 19:56 ` Failures on Ubuntu-Aarch64-native-gdbserver-m64, " gdb-buildbot 2019-12-12 10:21 ` Failures on Fedora-i686, " gdb-buildbot 2019-12-12 10:36 ` Failures on Fedora-x86_64-m64, " gdb-buildbot 2019-12-12 10:49 ` Failures on Fedora-x86_64-m32, " gdb-buildbot 2019-12-12 11:02 ` Failures on Fedora-x86_64-native-extended-gdbserver-m32, " gdb-buildbot 2019-12-12 11:07 ` Failures on Fedora-x86_64-native-extended-gdbserver-m64, " gdb-buildbot 2019-12-12 11:29 ` Failures on Fedora-x86_64-native-gdbserver-m32, " gdb-buildbot 2019-12-12 11:32 ` Failures on Fedora-x86_64-native-gdbserver-m64, " gdb-buildbot
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=d8edc8b768f0f611088161161392e1075134d635@gdb-build \ --to=gdb-buildbot@sergiodj.net \ --cc=gdb-testers@sourceware.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).