> For the complete documentation index, see [llms.txt](https://pavel-karateev.gitbook.io/intermediate-python/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://pavel-karateev.gitbook.io/intermediate-python/sredstva-razrabotki/debugging.md).

# Отладка

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

## Запуск из командной строки

Вы можете запустить скрипт из командной строки вместе с отладчиком. Пример:

```bash
$ python -m pdb my_script.py
```

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

## Запуск из скрипта

Вы можете задать контрольные точки в коде, что позволит изучить значения переменных и другие параметры в конкретный момент выполнения программы. Это возможно при помощи метода `pdb.set_trace()`. Вот живой пример:

```python
import pdb

def make_bread():
    pdb.set_trace()
    return "У меня нет времени"

print(make_bread())
```

Попробуйте запустить этот код. Отладчик откроется сразу после запуска скрипта. Теперь пришло время познакомиться с несколькими командами отладчика.

## Команды

* `c`: продолжить выполнения программы
* `w`: отобразить окружение текущей исполняемой инструкции
* `a`: отобразить список аргументов текущей функции
* `s`: исполнить текущую строчку кода и остановиться по возможности
* `n`: продолжить исполнение программы пока не будет достигнута следующая

  строка текущей функции или пока функция не завершит свою работу

Разница между `n` и `s` в том, что вторая команда приостановит исполнение после вызова функции, а первая только после достижения следующей строки текущей функции.

Это лишь несколько базовых команд. `pdb` также поддерживает проведение анализа после завершения работы программы. Это также очень удобная возможность. Я настоятельно советую вам ознакомиться с официальной документацией и изучить этот инструмент подробнее.
