aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.base
diff options
context:
space:
mode:
authorTankut Baris Aktemur <tankut.baris.aktemur@intel.com>2022-02-07 08:26:56 +0100
committerTankut Baris Aktemur <tankut.baris.aktemur@intel.com>2022-02-07 08:26:56 +0100
commit61fb73769a0168afa466bb2245a1a233942203bb (patch)
treed8f1ca94d686cfca7fbc7cff14c1d54bc0ebecdd /gdb/testsuite/gdb.base
parent2b826f759256b77b447da9831b079e32a7bb0cdb (diff)
downloadgdb-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/testsuite/gdb.base')
-rw-r--r--gdb/testsuite/gdb.base/cli-suppress-notification.c26
-rw-r--r--gdb/testsuite/gdb.base/cli-suppress-notification.exp39
2 files changed, 65 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.base/cli-suppress-notification.c b/gdb/testsuite/gdb.base/cli-suppress-notification.c
new file mode 100644
index 0000000..243dbc9
--- /dev/null
+++ b/gdb/testsuite/gdb.base/cli-suppress-notification.c
@@ -0,0 +1,26 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2020-2022 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/>. */
+
+static int global = 0;
+
+int
+main ()
+{
+ global++;
+ global++;
+ return 0;
+}
diff --git a/gdb/testsuite/gdb.base/cli-suppress-notification.exp b/gdb/testsuite/gdb.base/cli-suppress-notification.exp
new file mode 100644
index 0000000..1e4cc98
--- /dev/null
+++ b/gdb/testsuite/gdb.base/cli-suppress-notification.exp
@@ -0,0 +1,39 @@
+# Copyright 2020-2022 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/>.
+
+# Test the set/show suppress-cli-notifications command.
+
+standard_testfile
+
+if {[prepare_for_testing "failed to prepare" ${binfile} ${srcfile}]} {
+ return
+}
+
+if {![runto_main]} {
+ return
+}
+
+gdb_test "inferior 1" ".*Switching to inferior 1 .* to thread 1 .*" \
+ "inferior switch is not suppressed"
+
+gdb_test_no_output "set suppress-cli-notifications on"
+gdb_test_no_output "inferior 1" "inferior switch is suppressed"
+gdb_test_no_output "next" "stepping is suppressed"
+
+# Now check that suppression can be turned back off.
+gdb_test_no_output "set suppress-cli-notifications off"
+gdb_test "inferior 1" ".*Switching to inferior 1 .* to thread 1 .*" \
+ "inferior switch is not suppressed again"
+gdb_test "next" "return 0;" "stepping is not suppressed"