2013-03-01 1 views
8

Подумайте об этом сценарии:Отладка с PyCharm Как уйти в проект, не входя Джанго библиотеку

отладить мой проект Django, и я пошагово код (в и). Отладчик иногда входит в библиотеки Django или другие внешние библиотеки.

Кто-нибудь знает, как предотвратить отладчик от ввода внешнего кода? Или, по крайней мере, «большой» шаг, чтобы вернуть отладчик обратно в код проекта?

+2

Поставьте точку останова в коде и запустить его. – duffymo

+0

Не удается выполнить вызов метода в библиотеке? –

+0

посмотрите здесь: http: // stackoverflow.com/questions/11966276/ignore-exceptions-thrown-and-caught-inside-a-library –

ответ

0

Все выглядит одинаково с отладчиком, он не может отличить ваш код от кода Django - это все Python. Таким образом, он будет запускать все, однако, если вы хотите остановить его от бурения настолько низким, вам придется начинать «перешагивать» строки кода, а не «вступать» в них.

В соответствии с PyCharm docs вы хотите использовать F8, когда увидите линию кода, которая выглядит так, как будто она может быть шлюзом в внутренности Django. Если вы случайно попали в исходный код Django, вы можете нажать Shift+F8, пока не выйдете из него.

+2

Спасибо, ребята, за ответы! Действительно, Shift + F8 - это то, что я использовал до сих пор, я просто нашел его утомительным и пустой тратой времени. Хотя иногда я смотрел код Django, большую часть времени я смотрю на свой проект. Возможно, это будет функция в будущих версиях PyCharm. – Dan

+0

Это не будет функцией в будущих версиях, потому что это не нужно. Точки останова и переходы по строкам кода уже решают эту проблему. – Matt

+2

* он не может отличить ваш код от кода Django * Установив точку останова, вы указываете отладчик, где остановиться. Почему вы думаете, что не может быть способа сказать отладчику, где не останавливаться? См. Вопрос [Как настроить Qt Creator и/или gdb, чтобы во время отладки моей программы с использованием Qt-библиотек отладчик избегал попадания в исходные файлы Qt?] (Http://stackoverflow.com/q/1448426/95735), который показывает, что существует такой механизм в 'gdb'. Если у одного отладчика есть эта функция, другие отладчики тоже могут иметь это. –

6

Кто-нибудь знает, как предотвратить отладчик от ввода внешнего кода?

Да, Дмитрий Трофимов knows;

(...) добавить модули, которые вы не хотите, чтобы проследить в Словаре DONT_TRACE в <pycharm-distr>/helpers/pydev/pydevd.py
Это Hacky решение (...)

Если вы хотите, чтобы эта функция менее Hacky вы можете проголосовать за него, посетив Issue
PY-9101 Implement "Do not step into the classes" option for Python debugger


Те, кто использует PDB может быть интересно знать, что есть такая особенность в pdb;

Начиная с Python 3.1, Pdb класс имеет новый аргумент с именем skip -

class pdb.Pdb(completekey='tab', stdin=None, stdout=None, skip=None, nosigint=False)

Скип аргумент, если дано, должно быть итератор в Glob стиле шаблонов модуля имя. Отладчик не будет входить в фреймы, которые начинаются с в модуле, который соответствует одному из этих шаблонов. 1

1 ли кадр считаются, происходит в определенном модуле определяется __name__ в кадре глобал.

Пример, приведенный в документации показывает, как пропустить пакеты Джанго -

import pdb; pdb.Pdb(skip=['django.*']).set_trace()

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

  • Нет связанных вопросов^_^