From 058bc182b97fd5721e28d4ab84cebe703cf0d2d9 Mon Sep 17 00:00:00 2001 From: Frost Ming Date: Wed, 29 Oct 2025 14:12:12 +0800 Subject: [PATCH] gh-139940: Handle RuntimeError when attaching to a non-existing process in pdb. (#139941) --- Lib/pdb.py | 8 +++++++- Lib/test/test_remote_pdb.py | 12 ++++++++++++ .../2025-10-11-09-07-06.gh-issue-139940.g54efZ.rst | 1 + 3 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 Misc/NEWS.d/next/Library/2025-10-11-09-07-06.gh-issue-139940.g54efZ.rst diff --git a/Lib/pdb.py b/Lib/pdb.py index f695a39332e4..4ee12d17a611 100644 --- a/Lib/pdb.py +++ b/Lib/pdb.py @@ -3577,7 +3577,13 @@ def main(): parser.error("argument -m: not allowed with argument --pid") try: attach(opts.pid, opts.commands) - except PermissionError as e: + except RuntimeError: + print( + f"Cannot attach to pid {opts.pid}, please make sure that the process exists " + "and is using the same Python version." + ) + sys.exit(1) + except PermissionError: exit_with_permission_help_text() return elif opts.module: diff --git a/Lib/test/test_remote_pdb.py b/Lib/test/test_remote_pdb.py index ec11e4167884..ede99de98197 100644 --- a/Lib/test/test_remote_pdb.py +++ b/Lib/test/test_remote_pdb.py @@ -1590,5 +1590,17 @@ class PdbAttachTestCase(unittest.TestCase): self.assertNotIn("while x == 1", output["client"]["stdout"]) self.assertIn("while x == 1", re.sub("\x1b[^m]*m", "", output["client"]["stdout"])) + def test_attach_to_non_existent_process(self): + with force_color(False): + result = subprocess.run([sys.executable, "-m", "pdb", "-p", "999999"], text=True, capture_output=True) + self.assertNotEqual(result.returncode, 0) + if sys.platform == "darwin": + # On MacOS, attaching to a non-existent process gives PermissionError + error = "The specified process cannot be attached to due to insufficient permissions" + else: + error = "Cannot attach to pid 999999, please make sure that the process exists" + self.assertIn(error, result.stdout) + + if __name__ == "__main__": unittest.main() diff --git a/Misc/NEWS.d/next/Library/2025-10-11-09-07-06.gh-issue-139940.g54efZ.rst b/Misc/NEWS.d/next/Library/2025-10-11-09-07-06.gh-issue-139940.g54efZ.rst new file mode 100644 index 000000000000..2501135e657e --- /dev/null +++ b/Misc/NEWS.d/next/Library/2025-10-11-09-07-06.gh-issue-139940.g54efZ.rst @@ -0,0 +1 @@ +Print clearer error message when using ``pdb`` to attach to a non-existing process. -- 2.47.3