mirror of
https://github.com/python/cpython.git
synced 2025-12-08 06:10:17 +00:00
gh-139940: Handle RuntimeError when attaching to a non-existing process in pdb. (#139941)
This commit is contained in:
parent
c41f84ff61
commit
058bc182b9
3 changed files with 20 additions and 1 deletions
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -1590,5 +1590,17 @@ def test_attach_to_process_with_colors(self):
|
|||
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()
|
||||
|
|
|
|||
|
|
@ -0,0 +1 @@
|
|||
Print clearer error message when using ``pdb`` to attach to a non-existing process.
|
||||
Loading…
Add table
Add a link
Reference in a new issue