Ответ 1
Я поставил следующее в моем .pdbrc
import os
alias kk os.system('kill -9 %d' % os.getpid())
kk
убивает отладчик и (процесс, запускающий отладчик).
Я использую ipdb довольно часто, чтобы просто перейти к фрагменту кода, который изолирован, т. к. сложно написать реальный script, который его использует. Вместо этого я пишу минимальный тестовый пример с насмешкой и прыгаю в него.
Пример для рабочего процесса:
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 несколько раз, в конце концов также покидает терминал).
Есть ли умный способ заставить бросить курить? Является ли этот рабочий процесс даже разумным? Каков стандартный способ сделать это?
Я поставил следующее в моем .pdbrc
import os
alias kk os.system('kill -9 %d' % os.getpid())
kk
убивает отладчик и (процесс, запускающий отладчик).
Следующие работали для меня:
import sys
sys.exit()
В новых версиях ipython, как упоминалось выше и ниже, это не работает. В этом случае
import os
os._exit(0)
должен все-таки сделать трюк.
Это проблема с последней версией IPython 5.1.0. Вы можете проверить свою среду, используя следующий код:
pip freeze | egrep -i '^i'
Он будет разрешен с понижением до IPython == 5.0.0.
pip install ipython==5.0.0
Это работает для меня.
Как упоминалось в другом ответе, это было ошибкой в IPython 5.1. Он был исправлен в this pull request и больше не является проблемой из IPython 5.2 и далее. Теперь вы можете использовать q
, quit()
или Ctrl + d для выхода из отладчика.