diff options
Diffstat (limited to 'gdb/testsuite/gdb.python/py-commands-breakpoint.py')
-rw-r--r-- | gdb/testsuite/gdb.python/py-commands-breakpoint.py | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.python/py-commands-breakpoint.py b/gdb/testsuite/gdb.python/py-commands-breakpoint.py new file mode 100644 index 0000000..dbe7676 --- /dev/null +++ b/gdb/testsuite/gdb.python/py-commands-breakpoint.py @@ -0,0 +1,59 @@ +# Copyright (C) 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/>. + +# This file is part of the GDB testsuite. + +import gdb + + +class PyCommandsBreakpoint(gdb.Breakpoint): + bp_dict = dict() + + def __init__(self, *args, **kwargs): + gdb.Breakpoint.__init__(self, *args, **kwargs) + PyCommandsBreakpoint.bp_dict[self.number] = self + self.commands = "" + + @staticmethod + def run_py_commands(num): + bp = PyCommandsBreakpoint.bp_dict[num] + if hasattr(bp, "py_commands"): + bp.py_commands() + + def __setattr__(self, name, value): + if name == "commands": + l = ["python PyCommandsBreakpoint.run_py_commands(%d)" % self.number] + if value != "": + l.append(value) + value = "\n".join(l) + + super().__setattr__(name, value) + + +class TestBreakpoint(PyCommandsBreakpoint): + def __init__(self): + PyCommandsBreakpoint.__init__(self, spec="test") + self.var = 1 + self.commands = "continue" + self.silent = True + + def stop(self): + if self.var == 3: + self.commands = "" + return True + + def py_commands(self): + print("VAR: %d" % self.var) + self.var += 1 |