Estou usando o módulo PDB para depurar um programa. Gostaria de entender como posso sair do pdb e permitir que o programa continue até a conclusão. O programa é caro para ser executado, portanto, não quero sair sem que o script tente ser concluído. continue
não parece funcionar. Como posso sair do pdb e continuar com meu programa?
111
continue
sai de loops,return
sai de métodos / funçõescontinue
o comando pdb. Não é a declaração Python.continue
deve "Continuar a execução, só parar quando for encontrado um ponto de interrupção", de acordo com os documentos. Você tem um ponto de interrupção definido que está sendo atingido?pdb.set_trace()
em seu código-fonte?Respostas:
continue
deve "Continuar a execução, parar apenas quando um ponto de interrupção for encontrado", então você tem um ponto de interrupção definido em algum lugar. Para remover o ponto de interrupção (se você o inseriu manualmente):Ou, se estiver usando
pdb.set_trace()
, você pode tentar isso (embora se você estiver usando pdb de maneiras mais sofisticadas, isso pode quebrar as coisas ...)fonte
set_trace = lambda: None
:)set_trace = lambda: None
. Python org deve adicionar um comando que apenas permite que você saia do pdb.Um simples Ctrl- Dsairá do PDB. Se você quiser continuar ao invés de interromper, basta pressionar cao invés de todo o
continue
comandofonte
exit
A resposta de @voithos está correta, então adicionarei apenas uma alternativa no caso em que você está usando
set_trace
. Sim, opdb.set_trace = lambda: None
hack funciona bem, mas não se você tiver outros pontos de interrupção definidos e quiser reativá-lo mais tarde. Para mim, isso aponta para o fato de que, infelizmente,pdb
está faltando um monte de funcionalidades (mesmo coisas básicas como listas de exibição), e este é outro caso.A boa notícia é que ele
pdb++
é um ótimo substituto imediatopdb
e uma das coisas que ele resolve é exatamente o problema da desativaçãoset_trace
. Então você pode simplesmente fazer:e no
(Pdb++)
prompt, digite:Se você deseja reativar mais tarde, sem surpresa, isso funciona:
Fácil! E você receberá muitas outras coisas úteis além disso.
fonte
Se você realmente deseja sair do depurador, você precisa executar algo como o WinPdb, que permite que você se desconecte do processo e, em seguida, saia do depurador (NB: é multiplataforma).
Se quiser continuar a depuração, mas não parar mais em um determinado ponto de interrupção, você precisa:
cl bp_number
ouclear file:line
para remover permanentemente o ponto de interrupção oudisable pb_number
para desativá-lo, mas ser capaz de alternar-lo de volta.continue
e seu programa executado até então, o próximo ponto de interrupção diferente é atingido.Para obter mais detalhes sobre o acima, consulte o manual .
fonte
encontre uma nova maneira de sair do pdb sem instalar nada: - quando o programa começar a ser executado, pressione ctrl + c, então mude a janela para outra (qualquer janela), então o shell original com pdb rodando deve mostrar algo como: (pdb) ..... - volte para pdb e pressione Enter, agora está tudo pronto, o shell de comando pdb reaparece novamente
fonte