Просто вопрос удобства. Я был немного избалован отладчиками в IDE, таких как Visual Studio и XCode. Мне кажется немного неуклюжим печататьimport pdb; pdb.set_trace()
для установки точки останова (я бы предпочел не импортировать pdb в начало файла, так как я могу забыть и оставить его).
Есть ли более простой способ установить точку останова в коде Python, такой же простой и ненавязчивый, как то, что вы видите в IDE?
python -m pdb <your_script>.py
затем,b <line_number>
чтобы установить точку останова на выбранном номере строки (без скобок для функций). Нажмите,c
чтобы перейти к точке останова. Вы можете увидеть все свои точки останова, используя отдельнуюb
команду. Введите,help
чтобы увидеть другие команды pdb, доступные во время отладки.breakpoint()
функцию. python.org/dev/peps/pep-0553Ответы:
Вы можете запустить свою программу
pdb
из командной строки, запустивОн прервется на 1-й строке, тогда вы сможете добавить точку останова в любом месте вашего кода, используя
break
команду, ее синтаксис:Он достаточно гибкий, чтобы дать вам возможность добавлять точку останова где угодно.
источник
pdb.set_trace()
захожу в отладчик, используюl
команду (список) и вижу, что я хочу установить точку останова в строке 27, я затем ввожу:b 27
и отладчик установит точку останова в строке 27 (я обнаружил документация немного сложна для понимания, поэтому хотел добавить это уточнение).x
и вы хотите остановить его приf
вызове его метода , вы можете сказатьbreak x.f
, а затемc(ontinue)
. Это работает, даже если объект находится в недоступном файле или был создан динамически, например, путем распаковки.b /data/users/me/project/env/local/lib/python2.7/site-packages/django/core/urlresolvers.py:596
Ты можешь использовать:
источник
set_trace
только когда я использую bp ()?В vim у меня для этого настроен макрос (в моем файле .vimrc):
поэтому я могу просто нажать \ b (когда не в режиме вставки), и он добавляет точку останова после текущей строки, или \ B (обратите внимание на заглавную букву), и он помещает ее перед текущей строкой.
который, кажется, работает нормально. Большинство других «простых» редакторов программистов (emacs, sublimetext и т.д.) должны иметь аналогичные простые способы сделать это.
Изменить: на самом деле у меня есть:
что включает его только для исходных файлов Python. Вы можете легко добавить похожие строки для javascript или любого другого языка, который вы используете.
Обновление 2019 (Python 3.7+)
Python 3.7+ теперь имеет встроенную функцию,
breakpoint()
которая может заменить предыдущуюimport pdb; pdb.set_trace()
в vim. Он по-прежнему работает так же.источник
set autoindent
в вашем файле .vimrc .set autoindent
(и с множеством других опций) в стандартной комплектации. Одна из первых вещей, которые я делаю с новой системой, - это добавляю лучший vimrc ..."dyy
и всякий раз, когда вам это нужно, просто сделайте"dp
или"dP
. Изучите регистры vim ! Они очень полезны и всегда поддерживаются!qd
, а потом"dp
вставить. Наконец, назначьте свои инструкции регистру, чтобы он всегда заполнялся при загрузке vim. Пример:let @d = 'oimport pdb; pdb.set_trace()k0:w'
теперь просто используйте,@d
когда хотите вставить строку в файл. Вышеуказанное также сохраняет файл. Но вам придется записать свои собственные (а не копировать / вставить выше), поскольку задействованы специальные символы (для выхода и т. Д.).Если вы не хотите вручную устанавливать точки останова каждый раз при запуске программы (в Python 3.2+), например, скажем, вы хотите напрямую создать точку останова в строке 3 и остановить выполнение там:
python -m pdb -c "b 3" -c c your_script.py
Следующая информация может помочь:
источник
Я еще не пробовал, но они только что реализовали новую встроенную функцию breakpoint () в Python 3.7, что означает, что теперь вы можете вставить точку останова с помощью одного оператора:
источник
Вот как вы могли бы использовать pdb в командной строке, ничего не реализуя в своем исходном коде (документация и другие онлайн-ресурсы не очень хорошо объясняют это программисту, который в прошлом использовал только визуальные отладчики):
Запустите pdb, набрав в командной строке следующее:
Эта команда инициализирует pdb, и отладчик pdb остановится на первой строке вашего python_script и будет ждать ввода от вас:
Это интерфейс для связи с отладчиком. Теперь вы можете указать здесь свои команды. В отличие от использования кнопок или сочетаний клавиш в визуальных отладчиках, здесь вы будете использовать команды для получения тех же результатов.
Вы можете перейти к следующей строке вашего кода с помощью команды «n» (далее):
Выполнение следующего отобразит номер строки и конкретный код в источнике:
Вы можете установить точку останова, указав номер строки в исходном коде.
Здесь отладчик настроен на останов в строке 50. Если других точек останова нет, точка останова в строке 50 будет первой, и на нее может ссылаться идентификатор точки останова, который в данном случае равен 1. Если вы добавите больше точек останова, они получат идентификаторы последовательно (например, 2, 3 и т. Д.)
После установки точки останова вы продолжите выполнение своей программы, пока pdb не достигнет точки останова следующим образом:
Как только вы доберетесь до точки останова, вы можете перейти к следующей строке с помощью команды n, как описано ранее. Если вы хотите проверить значения переменных, вы должны выполнить команду параметра следующим образом:
Если вам больше не нужна точка останова, вы можете очистить ее, передав идентификатор точки останова с помощью команды clear:
Наконец, когда вы закончите с отладчиком, вы можете выйти из выполнения, как если бы вы выходили из интерпретатора командной строки python.
Я надеюсь, что это поможет любому начать работу с pdb. Вот список команд, которые можно использовать с отладчиком: pdb, так что вопросы и ответы
источник
В Python
3.7
есть новый встроенный способ установки точек останова. ВызовПодробнее здесь https://stackoverflow.com/a/53263117/6488361
источник
Вы можете использовать среду IDE, которая поддерживает отладку Python, или можете попробовать отличный инструмент Winpdb. Это работает на любой платформе и предоставляет графические средства отладки для вашего скрипта Python.
http://winpdb.org/
источник
Ты можешь использовать:
Все вышеперечисленное поддерживает отладку python из среды IDE.
источник
В Atom, если установлены плагины Python, вы можете просто ввести '
pdb
' и нажать Enter, и фрагмент кода напечатает import и проследит за вами.Я привык к этому сейчас, что иногда я просто набираю его, даже если я редактирую его в vim и жду появления раскрывающегося списка.
источник
Недооцененный метод - установить точку останова напрямую в pdb:
установит точку останова на
site-packages\torch\__init__.py:10
Затем
pdb> c
остановимся на этой точке останова.Следующие также действительны:
См. Подробности в документе .
источник
Вы можете использовать Vim с плагином Python-Mode или Emacs с Elpy плагином .
Эти плагины предоставляют вам точки останова с легким нажатием клавиш (
\ b
в Vim иC-c C-u b
Emacs), а также многие другие функции из тяжелых IDE (сворачивание кода, рефакторинг, линтинг и т. Д.) - все в легком текстовом редакторе на базе терминала.источник
Самый простой способ запустить отладчик в вашем скрипте - это просто
Запуск pdb в командной строке Linux дает
источник
pdb
? Или откуда?