Description
Bug report
Bug description:
Bug Description:
When debugging in Python using pdb, I set a breakpoint at a line with a list comprehension. However, when I use n
or until
, the debugger steps into the list comprehension multiple times (equal to its iteration count), rather than skipping to the next line. This behavior is unexpected and inconsistent with how n
is supposed to work.
Steps to Reproduce:
- Run the following code in Python 3.12 with pdb:
import random
def fitness(x):
return x ** 2
breakpoint() # Enter pdb here
population = [random.randint(0, 31) for _ in range(10)]
for generation in range(100):
scores = [fitness(ind) ** 2 for ind in population]
selected = random.choices(population, weights=scores, k=10)
next_gen = []
for i in range(0, 10, 2):
p1, p2 = selected[i], selected[i + 1]
cut = random.randint(1, 4)
mask = (1 << cut) - 1
child1 = (p1 & mask) | (p2 & ~mask)
child2 = (p2 & mask) | (p1 & ~mask)
if random.random() < 0.1:
child1 ^= 1 << random.randint(0, 4)
if random.random() < 0.1:
child2 ^= 1 << random.randint(0, 4)
next_gen.append([child1, child2])
population = next_gen
-
At the (Pdb) prompt, enter:
b 6
n -
When it breaks at line 6 (population = [...]), type:
n
until
until 8 -
It does not proceed to line 8 (the next executable line), but instead steps into the list comprehension 10 times.
Expected Behavior:
After hitting the breakpoint, using n
or until
should step over the entire list comprehension expression and proceed to the next line of code (for generation in range(10): in this case), not into each iteration of the list comprehension.
Actual Behavior:
The debugger enters the list comprehension and steps through each iteration, behaving as if the list comprehension is an expanded for-loop.
Environment:
Python Version: 3.12.2
Platform: Windows 11
IDE: Visual Studio Code
Execution: Running via terminal/debug console with built-in pdb
CPython versions tested on:
3.12
Operating systems tested on:
Windows