From: Mark Florisson Date: Mon, 22 Nov 2010 13:30:35 +0000 (+0100) Subject: Make stepping breakpoints internal in newer versions of gdb X-Git-Tag: 0.14.beta0~1^2~14 X-Git-Url: http://git.tremily.us/gitweb.cgi?a=commitdiff_plain;h=ba4644598cb143ec1b503a4c99649fed92943b0a;p=cython.git Make stepping breakpoints internal in newer versions of gdb --- 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):