Issue 14728: trace function not set, causing some Pdb commands to fail (original) (raw)

The issue 13183 raises the problem that when the trace function is not set in the caller frame, the step command fails at a return statement.

This new issue raises the point that, for the same reason:

* the next, until and return statements fail also at a return
  statement when the caller frame does not have a trace function

* when the user runs the up and down commands at any line in a
  frame to select a new frame, then the next, until or return
  commands fail when the selected frame does not have a trace
  function

The attached patch fixes all those problems (by first removing the changes made in bdb.py at issue 13183).

After the patch, the implementation ensures now that self.stopframe is either None, or belongs to the stack frame in the interval [self.botframe, self._curframe] and that it is set to self.botframe when the debugging session terminates. This allows removing the while loop in stop_here with an improvement in the performance of Pdb (since stop_here may be called at each line, even when no breakpoint is set in the function).

The patch applies to the default branch and includes 5 new test cases. A patch for 2.7 will be submitted later.