원격 디버깅¶
PyPy는 가상 머신에 내장된 실험적인 원격 디버깅 기능을 갖고 있습니다. 이는 임의의 Python 코드를 다른 PyPy 프로세스에 주입하는 데 사용할 수 있습니다. 지금까지는 Linux에서만 동작합니다. 이 메커니즘은 PEP 768에서 강한 영향을 받았습니다.
커맨드라인에서¶
다른 PyPy 프로세스에서 Python 코드를 직접 실행하려면 다음 명령을 실행할 수 있습니다:
pypy -m _pypy_remote_debug <pid> -c <code>
이것은 프로세스 ID가 pid인 다른 PyPy 프로세스가 주어진 code를 실행하도록 만듭니다.
또는 스크립트 파일을 전달할 수도 있습니다:
pypy -m _pypy_remote_debug <pid> <filename>
다른 프로세스가 현재 시스템 콜에 의해 블록되어 있거나 C 확장에서 오래 실행되는 계산을 수행하고 있는 경우, 해당 프로세스는 중단되지 않습니다. 이 경우 스크립트는 그 작업이 끝난 후에 실행됩니다.
예를 들어, 다른 프로세스가 자신의 (RPython 수준) 힙을 덤프하도록 하려면 다음을 실행할 수 있습니다:
pypy -m _pypy_remote_debug -c "import gc; gc.dump_rpy_heap('/tmp/rpy-heap-dump')"
API¶
Python 코드에서 원격으로 코드를 실행하려면 __pypy__.remote_exec(pid, filename, wait=True) 함수가 있습니다.