Использовать 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..

Другие вопросы по тегам