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
Linked PRs
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
noruntil, 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 hownis supposed to work.Steps to Reproduce:
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
noruntilshould 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
Linked PRs