При отладке скриптов в Python (2.7, работает на Linux) я иногда вводят pdb.set_trace() (обратите внимание, что я на самом деле с помощью IPDB), например:как остановить программу питона после pdb.set_trace()
import ipdb as pdb
try:
do_something()
# I'd like to look at some local variables before running do_something_dangerous()
pdb.set_trace()
except:
pass
do_something_dangerous()
Обычно я запускаю свой скрипт из оболочки, например
python my_script.py
Иногда во время моего сеанса отладки, я понимаю, что я не хочу, чтобы запустить do_something_dangerous(). Какой самый простой способ остановить выполнение программы, чтобы do_something_dangerous() не был запущен, и я могу вернуться в оболочку?
Как я понимаю, нажатие ctrl-d (или выдача команды отладки отладчика) просто выйдет из ipdb, и программа продолжит работу (в моем примере выше). Нажатие ctrl-c, похоже, вызывает KeyboardInterrupt, но я никогда не понимал контекста, в котором он был поднят.
Я надеюсь на что-то вроде ctrl-q, чтобы просто удалить весь процесс, но я ничего не смог найти.
Я понимаю, что мой пример очень надуман, но мой вопрос заключается в том, как прервать выполнение из pdb, когда отлаживаемый код настроен на обнаружение исключений. Речь идет не о том, как перестроить приведенный выше код, чтобы он работал!
Я думаю, что ctrl-d и q (uit) совпадают, и мой код настроен на обнаружение исключений, поэтому это не завершает мою программу. Я буду обновлять свой пример, потому что это было не совсем понятно! – nonagon