Issue 14789: after continue, Pdb stops at a line without a breakpoint (original) (raw)

In the following test run with python on the current head of the default branch, Pdb stops at line 3 where there is no breakpoint after two breakpoints have been set on the same function (setting two bps on the same location is useful, for example one bp to print a value without stopping and the other one with an ignore count).

=== main.py ================================= def bar(): x = 1 x = 2

bar()

$ python -m pdb main.py > /path_to/main.py(1)() -> def bar(): (Pdb) import sys; print(sys.version) 3.3.0a3+ (default:4e9680570be8, May 11 2012, 12:09:15) [GCC 4.3.2] (Pdb) break bar Breakpoint 1 at /path_to/main.py:1 (Pdb) break bar Breakpoint 2 at /path_to/main.py:1 (Pdb) continue > /path_to/main.py(2)bar() -> x = 1 (Pdb) continue > /path_to/main.py(3)bar() -> x = 2 (Pdb) quit

The attached patch fixes the problem. This patch also fixes the following problems that are caused by the same bug:

* when more than one breakpoint is set on the same line, only the
  command of the first effective breakpoint is run, and only the
  hit count and the ignore count of the first effective breakpoint
  are updated

The patch includes a test case for all those problems.