diff options
author | Tankut Baris Aktemur <tankut.baris.aktemur@intel.com> | 2022-02-07 08:26:56 +0100 |
---|---|---|
committer | Tankut Baris Aktemur <tankut.baris.aktemur@intel.com> | 2022-02-07 08:26:56 +0100 |
commit | 61fb73769a0168afa466bb2245a1a233942203bb (patch) | |
tree | d8f1ca94d686cfca7fbc7cff14c1d54bc0ebecdd /gdb/cli | |
parent | 2b826f759256b77b447da9831b079e32a7bb0cdb (diff) | |
download | gdb-61fb73769a0168afa466bb2245a1a233942203bb.zip gdb-61fb73769a0168afa466bb2245a1a233942203bb.tar.gz gdb-61fb73769a0168afa466bb2245a1a233942203bb.tar.bz2 |
gdb: add the 'set/show suppress-cli-notifications' command
GDB already has a flag to suppress printing notification events, such
as thread and inferior context switches, on the CLI. This is used
internally when executing commands. Make the flag available to the
user via a new command. This is expected to be useful in scripts.
For instance, suppose that when Inferior 1 gets to a certain state,
you want to add and set up a new inferior using the commands below,
but you also want to have a reduced/clean output.
define do-setup
printf "Setting up Inferior 2...\n"
add-inferior -exec a.out
inferior 2
break file.c:3
run
inferior 1
printf "Done\n"
end
Currently, GDB prints
(gdb) do-setup
Setting up Inferior 2...
[New inferior 2]
Added inferior 2 on connection 1 (native)
[Switching to inferior 2 [<null>] (/tmp/a.out)]
Breakpoint 2 at 0x1155: file file.c, line 3.
Thread 2.1 "a.out" hit Breakpoint 2, main () at file.c:3
3 return 0;
[Switching to inferior 1 [process 7670] (/tmp/test)]
[Switching to thread 1.1 (process 7670)]
#0 main () at test.c:2
2 int a = 1;
Done
GDB's Python API make it possible to capture and return GDB's output,
but this does not work for all the streams. In particular, CLI
notification events are not captured:
(gdb) python gdb.execute("do-setup", False, True)
[Switching to inferior 2 [<null>] (/tmp/a.out)]
Thread 2.1 "a.out" hit Breakpoint 2, main () at file.c:3
3 return 0;
[Switching to inferior 1 [process 8263] (/tmp/test)]
[Switching to thread 1.1 (process 8263)]
#0 main () at test.c:2
2 int a = 1;
You can use the new "set suppress-cli-notifications" command to
suppress the output:
(gdb) set suppress-cli-notifications on
(gdb) do-setup
Setting up Inferior 2...
[New inferior 2]
Added inferior 2 on connection 1 (native)
Breakpoint 2 at 0x1155: file file.c, line 3.
Done
Diffstat (limited to 'gdb/cli')
-rw-r--r-- | gdb/cli/cli-cmds.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/gdb/cli/cli-cmds.c b/gdb/cli/cli-cmds.c index 1515679..31d398c 100644 --- a/gdb/cli/cli-cmds.c +++ b/gdb/cli/cli-cmds.c @@ -192,6 +192,11 @@ static const char *const script_ext_enums[] = { static const char *script_ext_mode = script_ext_soft; + +/* User-controllable flag to suppress event notification on CLI. */ + +static bool user_wants_cli_suppress_notification = false; + /* Utility used everywhere when at least one argument is needed and none is supplied. */ @@ -2136,6 +2141,28 @@ show_max_user_call_depth (struct ui_file *file, int from_tty, value); } +/* Implement 'show suppress-cli-notifications'. */ + +static void +show_suppress_cli_notifications (ui_file *file, int from_tty, + cmd_list_element *c, const char *value) +{ + fprintf_filtered (file, _("Suppression of printing CLI notifications " + "is %s.\n"), value); +} + +/* Implement 'set suppress-cli-notifications'. */ + +static void +set_suppress_cli_notifications (const char *args, int from_tty, + cmd_list_element *c) +{ + cli_suppress_notification.user_selected_context + = user_wants_cli_suppress_notification; + cli_suppress_notification.normal_stop + = user_wants_cli_suppress_notification; +} + /* Returns the cmd_list_element in SHOWLIST corresponding to the first argument of ARGV, which must contain one single value. Throws an error if no value provided, or value not correct. @@ -2734,6 +2761,18 @@ Make \"wLapPeu\" an alias of 2 nested \"with\":\n\ set_cmd_completer_handle_brkchars (c, alias_command_completer); + add_setshow_boolean_cmd ("suppress-cli-notifications", no_class, + &user_wants_cli_suppress_notification, + _("\ +Set whether printing notifications on CLI is suppressed."), _("\ +Show whether printing notifications on CLI is suppressed."), _("\ +When on, printing notifications (such as inferior/thread switch)\n\ +on CLI is suppressed."), + set_suppress_cli_notifications, + show_suppress_cli_notifications, + &setlist, + &showlist); + const char *source_help_text = xstrprintf (_("\ Read commands from a file named FILE.\n\ \n\ |