pdb: some expression results are printed to the debuggee stdout #143874
Copy link
Copy link
Closed
Labels
stdlibStandard Library Python modules in the Lib/ directoryStandard Library Python modules in the Lib/ directorytype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
Description
Bug report
Bug description:
In a dual-terminal / remote debugging setup, some expressions evaluated in pdb print their results to the debuggee’s stdout instead of the pdb output stream. For example, at the pdb prompt:
(lambda: 123)()sum(i for i in (1, 2, 3))
their results appear in the remote/debuggee terminal. I have screenshots and a minimal test case demonstrating the issue.
target.py
# target.py
import os
import time
print("TARGET PID:", os.getpid(), flush=True)
print("Target is running... waiting forever.", flush=True)
while True:
time.sleep(1)attach.py
# attach.py
import sys
import pdb
pid = int(sys.argv[1])
print("Attaching to", pid)
pdb.attach(pid)
CPython versions tested on:
CPython main branch
Operating systems tested on:
Windows
Linked PRs
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
stdlibStandard Library Python modules in the Lib/ directoryStandard Library Python modules in the Lib/ directorytype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
Activity
gh-143874: Use self.message instead of raw print in `_exec_in_closure…
johnslavik commentedon Jan 20, 2026
@gaogaotiantian, do we backport #143875 or should this be closed?
pythongh-143874: Use self.message instead of raw print in `_exec_in_c…
gaogaotiantian commentedon Jan 20, 2026
@johnslavik good catch! This should be backported to 3.14. I'll work on it.
[3.14] gh-143874: Use self.message instead of raw print in `_exec_in_…
pythongh-143874: Use self.message instead of raw print in `_exec_in_c…