2017-01-24 2 views
0

Автоматический вызов pdb работает для ошибок путем переключения% pdb в IPython. Существует ли эквивалентная операция (или обходной путь) для автоматического вызова pdb для предупреждений?Как заставить IPython автоматически вызывать pdb для предупреждений?

Добавление pdb.set_trace() к указанному номеру строки не является идеальным, поскольку предупреждение находится внутри файла библиотеки, который вызывается из моего кода.

"python -m pdb myscript.py" будет делать это, но я внутри ipython repl, а не регулярный python repl.

Прецедент здесь, чтобы найти ошибки типа намекая, которые reporteed как предупреждения, как этот «RuntimeWarning: недопустимое значение встречается в равной»

+0

Я отредактировал ваш вопрос, чтобы изменить «ошибки» на «предупреждения» в одном месте, так как я думаю, это то, что вы имели в виду на основе контекста. Проверьте, правильно ли это. – BrenBarn

+0

да это было намерение, спасибо. – daj

+0

Вы можете попробовать использовать возможности предупреждений для изменения всех предупреждений на ошибки: https://docs.python.org/2/library/warnings.html – BrenBarn

ответ

0

Установив простой фильтр, чтобы включить предупреждения в 'error':

from warnings import warn, simplefilter 
simplefilter('error') 

это, кажется, работает нормально, например, пример функции:

def foo(): 
    a = '20' 
    warn("Horrible Things", RuntimeWarning) 

, который при вызове теперь вызывает pdb:

foo() 
> <ipython-input-78-f33d9e580240>(4)foo() 
     1 from warnings import warn 
     2 def foo(): 
     3  a = '20' 
----> 4  warn("Horrible Things", RuntimeWarning) 


ipdb> 
Смежные вопросы