From: mark Date: Sun, 28 Nov 2010 14:47:23 +0000 (+0100) Subject: set breakpoint pending on for libpython X-Git-Tag: 0.14.beta0~1^2~10 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=74af34d92c9625c5f5cafeb0a37e5776f8e34d4b;p=cython.git set breakpoint pending on for libpython --- diff --git a/Cython/Debugger/libpython.py b/Cython/Debugger/libpython.py index 593cd580..05d02769 100644 --- a/Cython/Debugger/libpython.py +++ b/Cython/Debugger/libpython.py @@ -359,7 +359,7 @@ class PyObjectPtr(object): if tp_flags & Py_TPFLAGS_STRING_SUBCLASS: try: gdb.lookup_type('PyBytesObject') - return PyBytesObject + return PyBytesObjectPtr except RuntimeError: return PyStringObjectPtr if tp_flags & Py_TPFLAGS_UNICODE_SUBCLASS: @@ -1686,8 +1686,8 @@ class PyNameEquals(gdb.Function): if pyframe is None: return None - return str(getattr(pyframe, attr)) - + return getattr(pyframe, attr).proxyval(set()) + return None def invoke(self, funcname): @@ -1872,8 +1872,9 @@ class GenericCodeStepper(gdb.Command): if funcname not in self.static_breakpoints: try: gdb.Breakpoint('', gdb.BP_BREAKPOINT, internal=True) - except TypeError: - # gdb.Breakpoint does not take an 'internal' argument + except (AttributeError, TypeError): + # gdb.Breakpoint does not take an 'internal' argument, or + # gdb.Breakpoint does not exist. breakpoint = self._break_func(funcname) except RuntimeError: # gdb.Breakpoint does take an 'internal' argument, use it @@ -2061,7 +2062,7 @@ class GenericCodeStepper(gdb.Command): return result - def step(self): + def step(self, *args): return self.finish_executing(self._step()) def run(self, *args): @@ -2090,7 +2091,9 @@ class PythonCodeStepper(GenericCodeStepper): def get_source_line(self, frame): try: - return self.pyframe(frame).current_line().rstrip() + pyframe = self.pyframe(frame) + return '%4d %s' % (pyframe.current_line_num(), + pyframe.current_line().rstrip()) except IOError, e: return None @@ -2129,6 +2132,7 @@ py_finish = PyFinish('py-finish') py_run = PyRun('py-run') py_cont = PyCont('py-cont') +gdb.execute('set breakpoint pending on') py_step.init_breakpoints() Py_single_input = 256