Я пытаюсь использовать 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()