Выход из ipdb отладчика Python
Я использую ipdb довольно часто, чтобы просто перейти к фрагменту кода, который изоляции т. е. трудно написать реальный скрипт, который его использует. Вместо этого я пишу минимальный тестовый пример с насмешкой и прыгаю в него.
примерный для рабочего процесса:
def func():
...
import ipdb
ipdb.set_trace()
...
def test_case():
...
func()
...
затем вызвать
py.test test_file.py -s -k test_case
Теперь, обычно я просто проверяю одну переменную или две, а затем хочу выйти. Измените код и сделайте это снова.
как мне уйти? В инструкции написано q
завершает работу отладчика. Это не так (на самом деле). Вы должны выйти несколько раз, прежде чем отладчик фактически завершится. То же самое поведение для Ctrl-C и Ctrl-D (с дополнительным разочарованием, что нажатие Ctrl-D несколько раз в конечном итоге выходит из терминала).
есть ли умный способ заставить бросить курить? Является ли этот рабочий процесс разумным? Каков стандартный способ сделать это?
4 ответов
для меня сработало следующее:
import sys
sys.exit()
в более новых версиях ipython, как упоминалось выше и ниже, это не работает. В таком случае...--3-->
import os
os._exit(0)
все равно должен сделать трюк.
Я положил следующее в мой .pdbrc
import os
alias kk os.system('kill -9 %d' % os.getpid())
kk
убивает отладчик и (процесс, который запускает отладчик).
это проблема с последней версией IPython 5.1.0. Вы можете проверить в своей среде, используя следующий код:
pip freeze | egrep -i '^i'
он будет разрешен путем понижения до IPython==5.0.0.
pip install ipython==5.0.0
это работает для меня.
Как упоминалось в другом ответе, это была ошибка в IPython 5.1. Это было зафиксировано в этот запрос тянуть и больше не является проблемой с IPython 5.2 и далее. Теперь вы можете использовать q
, quit()
или Ctrl+d для выхода из отладчика.