From ba4644598cb143ec1b503a4c99649fed92943b0a Mon Sep 17 00:00:00 2001 From: Mark Florisson Date: Mon, 22 Nov 2010 14:30:35 +0100 Subject: [PATCH] Make stepping breakpoints internal in newer versions of gdb --- Cython/Debugger/libpython.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/Cython/Debugger/libpython.py b/Cython/Debugger/libpython.py index 3c7c76ca..5e5fb9a4 100644 --- a/Cython/Debugger/libpython.py +++ b/Cython/Debugger/libpython.py @@ -1672,11 +1672,26 @@ class GenericCodeStepper(gdb.Command): for funcname in break_funcs: if funcname not in self.static_breakpoints: - self.static_breakpoints[funcname] = self._break_func(funcname) + try: + gdb.Breakpoint('', gdb.BP_BREAKPOINT, internal=True) + except TypeError: + # gdb.Breakpoint does not take an 'internal' argument + breakpoint = self._break_func(funcname) + except RuntimeError: + # gdb.Breakpoint does take an 'internal' argument, use it + # and hide output + result = gdb.execute( + "python bp = gdb.Breakpoint(%r, gdb.BP_BREAKPOINT, internal=True); " + "print bp.number", + to_string=True) + + breakpoint = int(result) + + self.static_breakpoints[funcname] = breakpoint for bp in set(self.static_breakpoints) - break_funcs: gdb.execute("delete " + self.static_breakpoints[bp]) - + self.disable_breakpoints() def enable_breakpoints(self): -- 2.26.2