2014-12-11 3 views
6

Если я использую отладчик, большую часть времени я просто хочу посмотреть, что делает интерпретатор в моем коде. Я хочу перешагнуть весь код используемой структуры и библиотек.Python Debugger, который поддерживает Black Boxing?

AFAIK это называется Черный бокс.

Как это сделать с помощью Python ipdb или другого отладчика Python?

Представьте себе:

Я использую рамки ОРМА, которые я доверяю, и не хочу, чтобы отладить.

cut_hair_method(orm_object.user) 

Метод cut_hair_method() моя, и я хочу, чтобы отладить его.

orm_object является из рамок, которые я использую. Отладчик будет входить в orm-код и делать некоторые специальные вещи, о которых мне все равно. Я не могу сказать отладчику: не прыгайте в код орма!

Update

Для моего случая это было бы очень легко решить, какой код должен быть в черном ящике и какой код: не код в $VIRTUAL_ENV/src/ не в черном ящике, все другие коды. Кроме того, я явно говорю отладчику что-то еще.

Update2

У меня есть имя «Black бокс» из этой статьи: https://hacks.mozilla.org/2013/08/new-features-of-firefox-developer-tools-episode-25/

+0

Любой хороший отладчик покажет «перешагнул» команды. Black-Boxing - это гораздо больше, чем просто отладка. Black-boxing - это идея, ориентированная на то, как тестировать (а не отлаживать) приложения. –

+0

Я добавил пример. AFAIK «шаг за шагом» не везде. – guettli

+1

Вместо того, чтобы использовать переключение, если это не работает для вас - почему бы не установить точку останова в 'cut_hair_method, а затем запустить ... Я, кажется, помню, что IDLE IDE имеет черный список модулей, которые не должны проходить через , но я также помню, что он не работал слишком хорошо (когда я использовал его несколько лет назад - возможно, я ошибаюсь). –

ответ

4

Питон отладчика базового класса (bdb.Bdb) имеет в Пропусти атрибут, давая список имен модулей в пропустить. Вы можете предоставить этот список либо при создании экземпляра отладчика, либо позже. Если вы хотите предоставить отрицательный список (список собственного модуля) или иначе вычислить, должен ли модуль пропускаться, вы можете подклассифицировать класс отладчика и переопределить is_skipped_module.

0

С PyCharm версии 4.5 есть функция под названием «Шаг в мой код»: https://www.jetbrains.com/pycharm/whatsnew/#StepIntoCode

Он работает. В моем случае я просто хочу войти в свой код (приложение Django), но не в код самого джанго. Сокращение по умолчанию сложное (alt-shift-F7), но его легко изменить.

Связанный вопрос: https://youtrack.jetbrains.com/issue/PY-14789