С Python 3.14 вы можете подключиться к работающему Python-процессу с помощью команды:
python -m pdb -p <pid>
Да, теперь
pdb поддерживает удалённую отладку без необходимости заранее вставлять pdb.set_trace() в код. Это стало возможно благодаря новой функции sys.remote_exec() — она позволяет выполнить произвольный Python-скрипт в другом процессе по его PID.Пример:
1. У вас работает программа
hello.py, которая принимает числа и считает сумму.2. В другом терминале вы запускаете:
import sys
sys.remote_exec(95700, "remote-script.py")
Скрипт
remote-script.py может, например, вывести stack trace:print("Hello from remote script")
from traceback import print_stack
print_stack()Важно:
— Скрипт исполняется в контексте текущего потока в целевом процессе (не параллельно).
— Запуск произойдёт при следующем «возврате» в Python-интерпретатор (например, после
input() или окончания sleep()).— Это не блокирует процесс (в отличие от
pdb -p pid, который приостанавливает выполнение).Потенциальные применения:
— Инспекция состояния и переменных на лету.
— Безопасный дамп состояния в проде (если действовать аккуратно).
— Запуск
remote_pdb.set_trace() для интерактивной отладки по сети.Библиотека питониста #свежак
