Начало работы с отладчиками Python

Начало работы с отладчиками Python Программирование и разработка

Ошибки в программировании неизбежны, и Python не исключение. Изучение того, как правильно использовать инструменты отладки в Python, может стать отличным способом повысить вашу производительность, а также качество вашей работы.

Кроме того, отладка считается важным навыком для любого программиста. Если вы только начинаете заниматься разработкой на Python, то вам обязательно нужно научиться отлаживать в IDE или с модулем отладки Python. Научиться использовать лучшие инструменты и методы отладки в Python гораздо проще, чем может показаться. Python имеет большое и увлеченное сообщество, поэтому существует множество отличных возможностей для отладки вашего кода.

Сегодня мы рассмотрим некоторые основы отладки, проведем вас через настройку модуля отладчика Python ( pdb), расскажем о некоторых других способах отладки вашего кода, а затем предоставим вам дополнительные ресурсы для изучения.

Что такое отладка?

Цель отладки — убедиться, что ваш код не содержит ошибок и проблем, которые могут поставить под угрозу производительность программы. В программировании есть два основных типа ошибок: синтаксические ошибки и семантические ошибки.

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

Вот пример синтаксической ошибки в Python:

# Replace «raccoon» with «ferret» in this list
housepets = [«cat», «dog», «bird», «raccoon»]
housepets.pop()
housepets.append(«ferret»)
print(hosepets)

Код не запускается, потому что вместо этого print(hosepets)он должен быть написан как.print(housepets)

Семантические ошибки возникают, когда ваша программа может работать успешно, но ведет себя неправильно.

В этом примере код использует clear()метод, который удаляет всех животных в housepetsмассиве, а не только енота.

# Replace «raccoon» with «ferret» in this list
housepets = [«cat», «dog», «bird», «raccoon»]
housepets.clear()
housepets.append(«ferret»)
print(housepets)

Таким образом, несмотря на то, что эта программа работает, она все еще не достигает желаемого эффекта.

Как вы можете себе представить, подобные ошибки довольно распространены. Вот почему практически все языки программирования (и самые популярные IDE) поддерживают отладку в качестве стандартной функции.

Что делает отладчик?

Отладчики — это диагностические инструменты, которые позволяют вам видеть состояние выполнения и данные программы во время ее выполнения. Другими словами, вы можете определить точку, в которой ваша программа Python должна быть остановлена, а затем приостановить выполнение. Приостановив свою программу, вы можете войти и найти информацию о значениях переменных, текущем состоянии потоков, объектах, находящихся в настоящее время в куче, и многое другое.

Не полагайтесь исключительно на print()

С моей стороны было бы упущением написать статью об отладке, не упомянув print(). Многие начинающие программисты Python и программисты-самоучки используют print()вызовы для отладки своего кода. Использование print()— это быстрый и простой способ узнать, присваивается ли переменной ожидаемое значение.

Однако размещение print()вызовов после каждой переменной для определения того, где находятся ваши ошибки, неэффективно и может стать неуправляемым с большими объемами кода.

Вот пример того, как вы можете использовать print()оператор для отладки. Попробуйте раскомментировать операторы печати, чтобы увидеть, где этот код пошёл не так.

fifteen = 300/45
#print(fifteen)
ten = 10
#print(ten)
five = 5.0
#print(five)
sum = fifteen + ten — five
#print(sum)
x = «The sum is equal to 30! «
print(x)
print(sum == 30)

Здесь программа работает, но не достигает желаемого результата.

Если бы вы работали с более чем несколькими переменными, проверка всех их значений с использованием print()быстро стала бы утомительной.

Как начать работу с pdb модулем Python

Что такое pdb модуль?

Модуль pdbпредставляет собой стандартный отладчик, который поставляется со всеми версиями Python. Итак, если на вашем компьютере уже установлен Python, у вас уже есть pdb. Pdb поддерживает установку условных точек останова, пошаговое выполнение на уровне исходной строки, проверку кадров стека, листинг исходного кода и оценку кода Python в контексте кадра стека [1].

Pdb — отличное место для начала, потому что это очень простой отладчик. Он отлично подходит для проектов малого и среднего размера, и вы можете добавлять различные расширения (например, pdb++), чтобы сделать его более полезным.

Как запустить отладчик

Вы можете запустить отладчик Python несколькими способами. Во-первых, вы можете импортировать и запустить его с помощью одной строки кода.

import pdb; pdb.set_trace()

Другой способ — импортировать отладчик в интегрированную среду разработки и обучения Python (IDLE) и запускать в нем ваш модуль.

Вы также можете вызвать отладчик из командной строки. Вот мини-учебник о том, как вы можете сделать именно это.

С помощью командной строки :

Сначала откройте терминал (окно командной строки) и перейдите к программе, которую необходимо отладить.

Затем импортируйте pdb и ваш модуль, затем выполните run()метод pdb, чтобы вызвать метод модуля main.

import pdb
import example.py
pdb.run('example.main()')
<string>(1)<module>()
(Pdb) continue

Это вызовет приглашение отладчика, где вы можете ввести continue или c, чтобы продолжить выполнение вашей программы. Продолжая, отладчик продолжит выполнение программы до тех пор, пока не достигнет точки останова или скрипт не завершится.

Вы также можете запустить отладчик, выполнив в терминале следующую команду:

python -m pdb example.py

Если вы используете Python 3, используйте это:

python3 -m pdb example.py

Пошаговый код Python

Пошаговое выполнение — это процесс прохождения кода по одной строке за раз. Для этого можно использовать команду step или s.

C:\Users\yourname>cd c:\debugging101

c:\debugging101>python -m pdb example.py
> c:\debugging101\example.py(2)<module>()
-> def main():
(Pdb) step
> c:\debugging101\example.py(4)<module>()
-> def doubler(a):
(Pdb) s
> c:\debugging101\example.py(9)<module>()
-> for i in range(1,10):

В строках типа c:debugging101\example.py(4)()число в скобках указывает строку, в которой находится ошибка. Вы можете использовать args или a для вывода текущего списка аргументов на экран. Еще одна полезная команда — это команда jump или j, за которой следует пробел и номер строки, к которой вы хотите перейти. Это позволяет сразу переходить к нужной строке.

Установка точек останова

Точка останова — это строка в коде, где вы хотите приостановить выполнение. Вы можете установить точки останова, вызвав команду break или b, после чего следует пробел и номер строки, на которой вы хотите сделать перерыв. Если вы хотите указать точку останова в другом файле, вы можете поставить перед номером строки имя файла и двоеточие.

Кроме того, вы можете использовать команду break без аргумента, чтобы отобразить все точки останова в программе. Если вы используете команду break с функцией в качестве аргумента, она установит точку останова на первом выполняемом операторе этой функции.

Если вы хотите установить временную точку останова, которая автоматически удаляется при попадании, вы можете использовать tbreak.

В этом примере мы установили точку останова в строке 6.

c:\debugging101>python -m pdb example.py
> c:\debugging101\example.py(4)<module>()
-> def doubler(a):
(Pdb) break 6
Breakpoint 1 at c:\debugging101\example.py:6
(Pdb) c
> c:\debugging101\example.py(6)doubler()
-> result = a*2

Оттуда вы можете использовать аргументы или команду для вывода списка аргументов на экран.

Удобная справочная таблица для команд pdb

Есть несколько полезных команд отладчика, которые нужно знать. Если какое-либо из ваших имен переменных используется совместно с командами отладчика, просто добавьте восклицательный знак !перед переменной, чтобы отличить их друг от друга.

Команда Описание
break или b Без аргумента это покажет все точки останова. С аргументом функции эта команда установит точку останова на первом выполняемом операторе этой функции.
continue или c Продолжить выполнение, остановить только при обнаружении точки останова.
down Перемещает область действия вниз по стеку вызовов функций на один уровень.
help или h Без аргумента это напечатает список доступных команд. С помощью команды в качестве аргумента напечатайте справку для этой команды. help pdbотображает полную документацию (строку документации pdbмодуля). Поскольку аргумент команды должен быть идентификатором, help execего необходимо ввести, чтобы получить справку по !команде.
jump или j Устанавливает следующую строку, которая будет выполнена. jumpпозволяет вам вернуться назад, чтобы снова выполнить код, или перейти вперед, чтобы пропустить код, который вы не хотите запускать. Вы не можете использовать jumpв середине forцикла или выйти из finallyпредложения.
next или n Продолжайте выполнение до тех пор, пока не будет достигнута следующая строка в текущей функции. Останавливается за пределами вызываемой функции.
return или r Продолжайте выполнение, пока текущая функция не вернется.
step или s Выполнять программу до следующей строки в программе. Останавливается внутри вызываемой функции.
tbreak Временная точка останова, которая автоматически удаляется при первом попадании.
up Перемещает вашу область вверх по стеку вызовов функций к текущей (по умолчанию) функции.
quit или q Закрывает отладчик и прерывает сеанс отладки.

Эти команды взяты из официальной документации отладчика Python [2]. Проверьте это для более обширного списка команд!

Дополнительные способы отладки в Python: IDE

Pdb — это отладчик командной строки, но многие IDE включают средства отладки, которые выглядят более привлекательными, а иногда и более простыми в использовании.

PyCharm

Одна из лучших IDE для работы с Python — PyCharm от JetBrains. PyCharm был разработан специально для использования с Python! Как Python IDE, вы можете ожидать, что PyCharm удовлетворит потребности, специфичные для Python. PyCharm также поддерживает классические функции отладки, такие как точки останова и пошаговое выполнение.

Вы можете начать сеанс отладки, запустив программу с прикрепленным к ней отладчиком. Его инструмент отладки имеет специальные панели для фреймов, переменных и часов, а также консоль, где он отображает входную и выходную информацию. Таким образом, вместо того, чтобы вводить команду для добавления точек останова и выполнения вашей программы, вы можете просто нажать кнопку для этого действия.

Примечание. PyCharm имеет как панель инструментов отладки, так и панель инструментов пошагового выполнения.

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

Отладчик Visual Studio

Microsoft Visual Studio (VS) — еще одна полнофункциональная IDE, но она была разработана для поддержки множества различных языков программирования и бесплатна как для профессиональных, так и для личных целей. VS IDE включает в себя редактор кода VS Code с интуитивно понятным и простым в использовании интерфейсом. Новичкам может быть проще ориентироваться в Microsoft VS IDE, чем в PyCharm.

Вы можете отлаживать файл Python с помощью редактора кода, щелкнув «Выполнить» -> «Начать отладку» или нажав F5, чтобы запустить текущий файл, в котором вы находитесь. Как и PyCharm, VS Code также поддерживает использование точек останова и пошагового выполнения, но имеет дополнительное преимущество эмулятора терминала, позволяющего работать в любой оболочке, установленной на вашем компьютере. Так что, если вы хотите работать в Linux, это абсолютно правильный вариант.

VS Code также упрощает настройку процесса отладки в настройках по мере необходимости и обеспечивает поддержку различных библиотек Python.

И PyCharm, и Visual Studio обеспечивают отличную поддержку Git и GitHub.

Подведение итогов и следующие шаги К настоящему моменту вы можете лучше понять, что такое отладка, ограничения, связанные с использованием print(), и, надеюсь, немного лучше познакомиться с некоторыми популярными инструментами отладки Python. Не существует универсальной процедуры отладки. Поэтому вам следует изучить, какие инструменты и методы подходят для вашего проекта.

Всегда приятно видеть, как растет сообщество Python, и мы надеемся, что вы разовьете навыки, необходимые для того, чтобы стать замечательным программистом.

Читайте также:  Элемент большинства с C++
Оцените статью
bestprogrammer.ru
Добавить комментарий