Отладка с PhpStorm

Этот урок подготовит вас к более глубокому погружению в тонкости отладки в PhpStorm. Вы научитесь запускать сеансы отладки, пользоваться точками останова и пошагово выполнять код с помощью Xdebug.

Другие выпуски

О чем это видео

Одна из самых мощных функций PhpStorm — это отладчик (или дебагер). Слово «debugger» восходит к 1940-м годам и буквально означает «инструмент, который устраняет баги». Отладчик позволяет приостанавливать выполнение кода, чтобы изучить память программы, проследить путь выполнения и многое другое. Главная задача отладчика — упростить поиск и устранение ошибок в коде.

В PhpStorm есть встроенный базовый отладчик, но самый популярный дебагер для PHP — Xdebug — нужно устанавливать отдельно. Хорошая новость: PhpStorm делает это автоматически. Давайте разберем, как настроить Xdebug и начать отладку.

Предположим, у вас не установлен Xdebug. Что произойдет, если вы начнете отладку PHP-скрипта, например теста? Вместо того чтобы просто запустить тест, вы можете нажать кнопку Debug. Как видите, PhpStorm сообщает, что отладчик не установлен, и предлагает это исправить. Просто нажмите Update Interpreter Info, затем Download and install Xdebug extension и дайте IDE немного времени, чтобы автоматически настроить Xdebug.

Завершив установку, PhpStorm автоматически перезапустит ваш тест с включенным отладчиком, но пока ничего не произойдет. Это потому, что мы еще не указали отладчику, где нужно остановиться. Для этого используются так называемые точки останова (breakpoints).

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

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

На этот раз видно, что что-то изменилось. Программа приостановлена, и PhpStorm показывает подробную информацию о состоянии кода.

Слева вы видите все, что произошло до того, как программа остановилась на этой точке останова. Мы пришли сюда через вот эти вызовы методов. Вы можете прокликать по ним, и PhpStorm покажет путь выполнения кода через файлы.

Справа отображаются переменные, доступные на текущем этапе выполнения. Например, есть переменная $this, которая ссылается на тестовый класс. Вы можете открыть ее и посмотреть содержимое. Есть и другие переменные, такие как глобальная переменная $_ENV. PhpStorm покажет их содержимое, и вы увидите, как список переменных меняется при переходе к предыдущим вызовам методов.

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

Можно продолжить выполнение, нажав кнопку Resume, но тогда тест просто завершится.

Поэтому вернемся к нашей точке останова, но вместо Resume можно нажать Step over и Step into. Это очень полезные инструменты.

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

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

Отладка — мощный, но не самый простой инструмент. В ней много нюансов, и бывает трудно приводить примеры вне контекста. Это навык, который требует практики, как игра на музыкальном инструменте.

Итак, что будем делать дальше? Мы с вами разобрали основы: как начать сеанс отладки, как ставить точки останова и пошагово выполнять отладку.Теперь дело за вами. Привыкнуть к отладчику можно только через практику. В следующий раз, когда захочется использовать var_dump или dd, попробуйте вместо этого отладчик. Сначала может быть непривычно, но со временем вы заметите, насколько он упрощает работу с кодом.