В Java / C # вы можете легко пройти по коду, чтобы отследить, что может быть не так, и IDE делают этот процесс очень удобным для пользователя.
Можете ли вы проследить через код Python аналогичным образом?
Да! Для этого есть отладчик Python pdb
!
Вы можете запустить программу на Python pdb
с помощью pdb myscript.py
или python -m pdb myscript.py
.
Затем вы можете выполнить несколько команд, которые описаны на pdb
странице.
Некоторые полезные для запоминания:
b
: установить точку остановаc
: продолжайте отладку, пока не достигнете точки остановаs
: пройти через кодn
: перейти к следующей строке кодаl
: список исходного кода для текущего файла (по умолчанию: 11 строк, включая выполняемую строку)u
: перемещаться вверх по стекуd
: перейти вниз по стекуp
: напечатать значение выражения в текущем контекстеЕсли вы не хотите использовать отладчик командной строки, некоторые IDE, такие как Pydev , Wing IDE или PyCharm, имеют отладчик GUI. Wing и PyCharm являются коммерческими продуктами, но у Wing есть бесплатная версия «Personal», а у PyCharm - бесплатная версия для сообщества.
pudb
отлично подходит для этого. Такжеpydev
pdb
не инструмент командной строки. Чтобы использовать это, используйтеpython -m pdb your_script.py
.pdb
команда входит вpython
пакет. В любом случае,python -m <module>
становится стандартом для других вещей, таких какpip
, так что, вероятно, лучше использовать это по умолчанию.С помощью Python Interactive Debugger 'pdb'
Первый шаг - заставить интерпретатор Python войти в режим отладки.
A. из командной строки
Самый простой способ запуска из командной строки интерпретатора Python
Б. Внутри переводчика
Разрабатывая ранние версии модулей и экспериментируйте более итеративно.
C. Из вашей программы
Для большого проекта и долго работающего модуля, можете начать отладку изнутри программы, используя import pdb и set_trace () следующим образом:
Пошаговая отладка для более внутреннего
Выполните следующий оператор ... с помощью «n» (следующий)
Повторение последней команды отладки ... с помощью ENTER
Бросить все это ... с «q» (выход)
Печать значения переменных… с помощью «p» (печать)
а) в год
Отключение подсказки (Pdb)… с помощью «c» (продолжение)
Видя, где вы находитесь ... с «л» (список)
Вступая в подпрограммы ... с "S" (шаг в)
Продолжая ... но только до конца текущей подпрограммы ... с "r" (возврат)
Назначьте новое значение
а) ! b = "B"
Установить точку останова
а) сломать белье
б) нарушить имя функции
в) прервать имя файла: белье
Временная точка останова
а) триммер белья
Условная точка останова
а) перерыв белья номер, состояние
Примечание: ** Все эти команды должны выполняться из ** pdb
Для углубленного знания, обратитесь: -
https://pymotw.com/2/pdb/
https://pythonconquerstheuniverse.wordpress.com/2009/09/10/debugging-in-python/
источник
В python есть модуль pdb. В верхней части вашего скрипта Python вы делаете
и вы войдете в режим отладки. Вы можете использовать 's' для перехода, 'n' для перехода к следующей строке, аналогично тому, что вы сделали бы с отладчиком 'gdb'.
источник
Начиная с Python 3.7, вы можете использовать
breakpoint()
встроенную функцию для входа в отладчик:По умолчанию
breakpoint()
будет импортироватьpdb
и звонитьpdb.set_trace()
. Однако вы можете управлять поведением отладки с помощьюsys.breakpointhook()
переменной окруженияPYTHONBREAKPOINT
.См. PEP 553 для получения дополнительной информации.
источник
breakpoint
я был взволнован. Но потом я узнал, что это по сути всего лишь ярлык,import pdb; pdb.set_trace()
и это меня расстроило. Разработчики Python: пожалуйста, обратите внимание на улучшение PDB с помощью базовых функций GDB, таких как строки контекста, постоянная история команд и автозаполнение вкладок :-)ipdb (отладчик IPython)
ipdb добавляет функциональность IPython в pdb, предлагая следующие ОГРОМНЫЕ улучшения:
Как и в случае с pdg, ipdb по-прежнему далек от совершенства и является полностью элементарным по сравнению с GDB, но это уже огромное улучшение по сравнению с pdb.
Использование аналогично
pdb
, просто установите его с помощью:а затем добавьте в строку, из которой вы хотите выполнить отладку:
Вы, вероятно, хотите добавить ярлык для этого из вашего редактора, например, для Vim snipmate, который у меня есть:
так что я могу печатать просто,
ipd<tab>
и он расширяется до точки останова. Тогда удалить его легко,dd
поскольку все содержится в одной строке.context=21
увеличивает количество строк контекста, как описано в разделе : Как я могу заставить ipdb показывать больше строк контекста при отладке?Кроме того, вы также можете отлаживать программы с самого начала с помощью:
но вы, как правило, не хотите этого делать, потому что:
Или же, как в raw pdb 3.2+, вы можете установить некоторые точки останова из командной строки:
хотя
-c c
по какой-то причине не работает: https://github.com/gotcha/ipdb/issues/156python -m module
Отладка была задана по адресу: Как отладить модуль Python, запущенный с python -m из командной строки? и так как Python 3.7 можно сделать с:Серьезные недостающие возможности как pdb, так и ipdb по сравнению с GDB:
Особые неприятности ipdb:
Протестировано в Ubuntu 16.04, ipdb == 0.11, Python 3.5.2.
источник
В
breakpoint()
настоящее время существует метод, который заменяетimport pdb; pdb.set_trace()
.Он также имеет несколько новых функций , таких как возможные переменные среды.
источник
Если вы пришли из Java / C # фона, я думаю, что вам лучше всего было бы использовать Eclipse с Pydev . Это дает вам полностью функциональную IDE со встроенным отладчиком. Я также использую его с django.
источник
Если вам нужна IDE со встроенным отладчиком, попробуйте PyScripter .
источник
https://wiki.python.org/moin/PythonDebuggingTools
pudb - хорошая замена для pdb
источник
Python Tutor - это онлайн одношаговый отладчик, предназначенный для новичков. Вы можете вставить код на редактирование странице нажать «Визуализация выполнения», чтобы запустить его.
Помимо прочего, он поддерживает:
Однако он также не поддерживает много вещей , например:
io.StringIO
иio.BytesIO
вместо этого: demoисточник
Программный переход и отслеживание кода Python также возможны (и это легко!). Посмотрите документацию sys.settrace () для более подробной информации. Также вот учебник, чтобы вы начали.
источник
Visual Studio с PTVS может быть вариантом для вас: http://www.hanselman.com/blog/OneOfMicrosoftsBestKeptSecretsPythonToolsForVisualStudioPTVS.aspx
источник
PyCharm - это IDE для Python, включающая отладчик. Посмотрите это видео на YouTube, чтобы узнать, как использовать отладчик PyCharm для пошагового выполнения кода.
PyCharm Tutorial - отладка кода Python с использованием PyCharm
Примечание: это не предназначено для одобрения или обзора. PyCharm - это коммерческий продукт, за который нужно платить, но компания предоставляет бесплатную лицензию для студентов и преподавателей, а также «облегченную» версию Community, бесплатную и с открытым исходным кодом.
источник