Как проверить область действия функции, в которой Python вызывает исключение? - PullRequest
1 голос
/ 25 мая 2009

Я недавно обнаружил очень полезный флаг '-i' для Python

-i     : inspect interactively after running script, (also PYTHONINSPECT=x)
         and force prompts, even if stdin does not appear to be a terminal

это отлично подходит для проверки объектов в глобальной области видимости, но что произойдет, если исключение было вызвано при вызове функции, и я хотел бы проверить локальные переменные функции? Естественно, меня интересует область, где впервые возникло исключение, есть ли способ добраться до него?

Ответы [ 3 ]

5 голосов
/ 25 мая 2009

В ipython вы можете проверять переменные в том месте, где произошел сбой кода, без необходимости его изменения:

>>> %pdb on
>>> %run my_script.py
5 голосов
/ 31 мая 2009

В интерактивном режиме сразу же наберите

>>> import pdb
>>> pdb.pm()

pdb.pm () - это посмертный отладчик. Это поместит вас в область, в которой возникло исключение, и тогда вы сможете использовать обычные команды pdb.

Я использую это все время . Это часть стандартной библиотеки (не требуется ipython) и не требует редактирования команд отладки в вашем исходном коде.

Единственная хитрость - помнить, чтобы сделать это прямо сейчас; если вы сначала введете какие-либо другие команды, вы потеряете область, в которой произошло исключение.

4 голосов
/ 25 мая 2009

использовать ipython: http://mail.scipy.org/pipermail/ipython-user/2007-January/003985.html

Пример использования:

from IPython.Debugger import Tracer; debug_here = Tracer()

#... later in your code
debug_here()  # -> will open up the debugger at that point.

"Как только отладчик активируется, вы можете использовать все его обычные команды для пошаговое выполнение кода, установка точек останова и т. д. См. документацию по pdb из стандартной библиотеки Python для подробностей использования. "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...