Иногда, когда я отлаживаю исключение, вы будете подняты.Как я могу увидеть детали исключения в отладчике Python?
Например, рассмотрим следующий код:
def some_function(): # Pretend this function is in a library...
# ...and deep within the library is an exception:
raise Exception('An exception message with valuable information.')
import pdb; pdb.set_trace()
try:
some_function() # Pretend I am debugging from this point using pdb.
except:
pass
При отладке из some_function()
вызова, если я выполняю команду next
Я прослежу следующие подробности об исключении, который был поднят [и пойманной]:
Exception: Exceptio...ation.',)
Вот прямо копировать/вставить из терминала я работал в:
> /tmp/test.py(7)<module>()
-> some_function() # Pretend I am debugging from this point using pdb.
(Pdb) next
Exception: Exceptio...ation.',)
> /tmp/test.py(7)<module>()
-> some_function() # Pretend I am debugging from this point using pdb.
(Pdb)
Было бы полезно увидеть все сообщение об исключении. Как я могу сделать это в pdb?
Какую версию Python вы используете? Мой не урезает. – Keith
Версия 2.7.1. Обратите внимание, что оператор raise печатается целиком, поэтому на первый взгляд вы можете записать все исключение, но когда фактическое исключение «перехвачено» (я не знаю этого термина) pdb, оно усечено. – Buttons840
Ну, я на самом деле написал свой собственный вариант отладчика Python, который этого не делает, а также означает автоматически вводить отладчик (использует sys.excepthook). Если вам нравится, вы можете попробовать это вместо этого. Это подпапка [debugger] (http://code.google.com/p/pycopia/source/browse/#svn%2Ftrunk%2Fdebugger). – Keith