Просто короткий анекдот (отсюда и «вики сообщества»): на прошлой неделе я подумал, что в приложении Django была умная идея импортировать модуль pprint
для красивой печати данных Python только , если DEBUG Правда:
if settings.DEBUG:
from pprint import pprint
Затем я использовал здесь и там команду pprint
в качестве оператора отладки:
pprint(somevar) # show somevar on the console
После окончания работы я протестировал приложение с настройкой DEBUG=False
. Вы можете догадаться, что произошло: сайт сломался с ошибками HTTP500 повсюду, и я не знал, почему, потому что нет обратной трассировки, если DEBUG
равно False
. Я был озадачен тем, что ошибки волшебным образом исчезли, если я снова переключился в режим отладки.
Мне потребовалось 1-2 часа, чтобы поместить операторы print
по всему коду, чтобы обнаружить, что код вылетает точно в указанной выше строке pprint()
. Затем мне потребовалось еще полчаса, чтобы убедить себя прекратить стучать головой по столу.
Теперь приходит мораль истории:
Не каждая вещь, которая на первый взгляд выглядит как умная идея, настолько умела в конце.
Важным моментом, который необходимо учитывать при отладке этих ошибок, являются все параметры конфигурации и переключатели платформы , которые сам код делает самостоятельно. Это может быть намного больше, чем просто некоторые пользовательские настройки. Документ хороший, если вы сделаете предположение о платформе пользователя (например, если вы тестируете только для Win / Mac / Linux, будет ли ваш код зависать на BSD или Solaris?)
Приветствия