Skip to content

pdb: some expression results are printed to the debuggee stdout #143874

@hyongtao-code

Description

@hyongtao-code

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)
Image

CPython versions tested on:

CPython main branch

Operating systems tested on:

Windows

Linked PRs

Metadata

Metadata

Assignees

No one assigned

    Labels

    stdlibStandard Library Python modules in the Lib/ directorytype-bugAn unexpected behavior, bug, or error

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions