pdb присоединяется к подпроцессу, когда вызывается как скрипт - PullRequest
0 голосов
/ 13 марта 2019

Я пытаюсь использовать ipdb в качестве сценария для отладки других сценариев.

Например:

python3 -m pdb myscript.py

используя multiprocessing.process, я хочу, чтобы pdb автоматически входил в посмертную отладку , присоединенную к подпроцессу , если отлаживаемая программа завершается ненормально.

Тем не менее, когда я запускаю просто python3 -m pdb myscript.py, хотя он поднимается и зависает в какой-то момент без выхода, но не входит в режим post_mortem.


обновление

Я обнаружил, что вероятная проблема заключается в том, что дочерние процессы не останавливаются, когда кто-либо из их братьев и сестер вызывает необработанное исключение и зависает в режиме post_mortem. Поэтому я хочу, чтобы в случае остановки какого-либо из родительских или дочерних процессов все процессы были полностью остановлены.

Полагаю, эта часть кода, которая порождает процессы, вызывает проблемы. Если это так, как я должен изменить это, чтобы работать, как я хотел?

for pid, funcs in enumerate(functions):
    procs.append(Process(target=subproc, args=pid, funcs))
    procs[-1].daemon = True
    procs[-1].start()
...