sys.remote_exec() și sys.is_remote_debug_enabled() în Python

Interpretorul (sys) Python 3.14+

Rulează un script Python în alt proces Python aflat în execuție, pentru depanare.

Sintaxă
sys.remote_exec(pid, cale_script)
sys.is_remote_debug_enabled()

Ce face sys.remote_exec() și sys.is_remote_debug_enabled()

Python 3.14 permite atașarea la un proces Python care rulează: remote_exec(pid, script) programează rularea fișierului script în procesul pid, la următorul punct sigur. Așa funcționează python -m pdb -p PID. Necesită aceeași versiune de Python și drepturi de depanare asupra procesului (pe macOS și Linux, de obicei drepturi de administrator).

is_remote_debug_enabled() spune dacă procesul curent acceptă atașarea; poate fi dezactivată cu -X disable_remote_debug sau PYTHON_DISABLE_REMOTE_DEBUG.

Parametri

Parametru Descriere
pid Procesul țintă.
cale_script Scriptul rulat acolo.

Ce returnează

None; is_remote_debug_enabled: bool.

Exemple

Exemplul 1: Inspectarea unui server care rulează

import sys
from pathlib import Path
print(sys.is_remote_debug_enabled())
Path("/tmp/inspect.py").write_text("import threading; print('fire active:', threading.active_count())")
sys.remote_exec(48213, "/tmp/inspect.py")

Rezultat (rulat ca root; mesajul apare în ieșirea procesului 48213)

True

Greșeli frecvente

  • Rulezi fără drepturi suficiente și primești PermissionError, sau ținta are altă versiune de Python.

Comenzi înrudite

  • breakpoint(): Oprește programul în acel punct și pornește depanatorul (pdb), ca să inspectezi variabilele.
  • os.getpid() și os.getppid(): Identificatorul procesului curent și al procesului părinte.