diff options
author | Tom de Vries <tdevries@suse.de> | 2025-01-04 12:10:42 +0100 |
---|---|---|
committer | Tom de Vries <tdevries@suse.de> | 2025-01-04 12:10:42 +0100 |
commit | deea250ab63d84a58125ca0963c625b50468a578 (patch) | |
tree | 4b8d6ede1dcfe638a5154bb71799d9b9b2c4d721 /gdb/testsuite/gdb.python/py-commands-breakpoint.c | |
parent | 09859118ffc86b311d47aa461f722a720045e049 (diff) | |
download | binutils-deea250ab63d84a58125ca0963c625b50468a578.zip binutils-deea250ab63d84a58125ca0963c625b50468a578.tar.gz binutils-deea250ab63d84a58125ca0963c625b50468a578.tar.bz2 |
[gdb/testsuite] Add gdb.python/py-commands-breakpoint.exp
A recent discussion about what commands are allowed during
gdb.Breakpoint.stop, made me wonder if there would be less restrictions if
we'd do those commands as part of a breakpoint command list instead.
Attribute gdb.Breakpoint.commands is a string with gdb commands, so I
tried implementing a new class PyCommandsBreakpoint, derived from
gdb.Breakpoint, that supports a py_commands method.
My original idea was to forbid setting PyCommandsBreakpoint.commands, and do:
...
def py_commands(self):
print("VAR: %d" % self.var)
self.var += 1
gdb.execute("continue")
...
but as it turns out 'gdb.execute("continue")' does not behave the same way as
continue. I've filed PR python/32454 about this.
So the unsatisfactory solution is to first execute
PyCommandsBreakpoint.py_commands:
...
def py_commands(self):
print("VAR: %d" % self.var)
self.var += 1
...
and then:
...
self.commands = "continue"
...
I was hoping for a better outcome, but having done the work of writing this, I
suppose it has use as a test-case, perhaps also as an example of how to work
around PR python/32454.
Tested on x86_64-linux.
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=32454
Diffstat (limited to 'gdb/testsuite/gdb.python/py-commands-breakpoint.c')
-rw-r--r-- | gdb/testsuite/gdb.python/py-commands-breakpoint.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.python/py-commands-breakpoint.c b/gdb/testsuite/gdb.python/py-commands-breakpoint.c new file mode 100644 index 0000000..d719922 --- /dev/null +++ b/gdb/testsuite/gdb.python/py-commands-breakpoint.c @@ -0,0 +1,31 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2025 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 void +test (void) +{ +} + +int +main (void) +{ + test (); + test (); + test (); + + return 0; +} |