Использовать pdb для отладки в подпроцесс?
У меня есть некоторый код на Python со многими вызовами подпроцесса (например, subprocess.check_call()). Это очевидно не может отладить в подпроцесс.
Есть ли способ (например, добавить код), чтобы заставить это сделать это, или я должен использовать другой отладчик?
2 ответа
Оказывается, препятствием было то, что код, вызывающий подпроцесс, также перенаправлял стандартный вывод:
subprocess.call(["called_program",
"-q", num_processes,
"-k", yaml_key],
stdout=logfile,
stderr=subprocess.STDOUT)
Согласно комментарию tdelaney, я удалил перенаправления и установил точку останова в called_program.py
, Теперь я могу использовать pdb в этом модуле.
Вам придется пройтись по коду, если у вас есть pdb. Если у вас есть исходные файлы, оставьте точку останова на интересующей вас линии и используйте pdb, чтобы автоматически остановиться на интересующей вас линии.
Это то, что мы делаем в.net. Надеюсь, это должно работать и для Python..