Установка Xdebug, часть 1: модуль Xdebug
К настоящему времени мы рассмотрели много вопросов, связанных с работой с WordPress и отладкой. И это особенно верно в отношении работы с инструментами и плагинами, доступными в WordPress. Если вы только присоединяетесь к этой конкретной серии, пожалуйста, убедитесь, что вы догнали следующие сообщения:
- Чтение и понимание журналов ошибок WordPress, часть 1
- Чтение и понимание журналов ошибок WordPress, часть 2
- Базовая отладка в WordPress
В предыдущем посте, напомню, я сказал следующее:
Но если вы хотите окунуться в мир профессиональной и практической отладки из среды IDE, важно понимать, что, как и почему.
И мы, наконец, готовы взглянуть на то, что для этого требуется. Однако для начала нам нужно понять несколько вещей о Xdebug, терминологии и иметь IDE, которая будет совместима со всеми, кто читает эту конкретную серию.
Так что это будет разбито на две части.
- Во-первых, мы рассмотрим терминологию, необходимую для отладки, и убедимся, что у нас есть правильная настройка IDE в нашей среде разработки.
- Далее мы рассмотрим, как убедиться, что мы правильно установили Xdebug, а затем подключим его к нашей среде разработки, чтобы мы могли заставить его работать.
Если вы читали различный контент в этом блоге за последние несколько лет, кое-что из этого может показаться вам знакомым. Если нет, ничего страшного. Помните, что цель состоит в том, чтобы убедиться, что мы все находимся на одном уровне, когда мы продолжим работу, упомянутую выше, и на протяжении всей оставшейся части серии.
С учетом сказанного, давайте начнем.
Установка Xdebug, часть 1
Как упоминалось выше, этот набор постов будет служить одной из двух целей, обе из которых можно кратко описать (вторая из которых будет описана в следующем посте):
- Терминология отладки
- Установка IDE
Хотя многие из тех, кто читает это, уже знакомы с некоторыми терминами (особенно если вы использовали инструменты на стороне клиента или даже инструменты на стороне сервера раньше), и у вас уже есть предпочтительный редактор, важно убедиться, что мы по крайней мере, работая с последовательной основой.
Если вы уверены в своих навыках по двум пунктам, упомянутым выше, то следующий пост, вероятно, будет для вас более интересным. Если, с другой стороны, это открывает для вас новую территорию, это должно заложить основу для всего, что вам нужно, чтобы убедиться, что вы успешно отлаживаете проекты в WordPress.
Кроме того, мы позаботимся о том, чтобы у вас был согласованный набор инструментов для работы, чтобы мы могли продолжать продвигаться вперед со стандартным набором инструментов для создания максимально продуктивной среды разработки.
1 Терминология отладки
В зависимости от вашего опыта вы можете привести от пяти до семи терминов, каждый из которых связан с отладкой. Я обрисовал в общих чертах то раньше в других сообщениях на этом участке. Однако каждый раз я делал это с немного другим взглядом на содержание.
В этом посте я постараюсь сделать его максимально точным и точным, чтобы он давал последовательную ссылку, которую мы сможем использовать в следующих постах (и в работе). В нынешнем виде, вот термины, которые, я думаю, должен знать каждый применительно к своему отладчику.
- Точки останова. Их можно считать основными блоками отладки. Проще говоря, это места в коде, выполнение которых вы хотите приостановить, чтобы вы могли изучить, что происходит в коде. Возможно, это связано с переменными; возможно, это связано с функциями, возможно, это связано с чем-то еще. В любом случае, это важно, потому что вы говорите программе: «Эй, я хочу остановить выполнение программы прямо здесь, в этой строке, чтобы я мог исследовать состояние программы».
- Часы. Это вызовы функций, переменные или другие места в коде, которые могут быть установлены таким образом, что мы можем в буквальном смысле видеть изменение значений во время выполнения. Если мы говорим о функциях, то мы могли бы иметь в виду значения аргументов, поскольку они устанавливаются и управляются внутри функции. Если мы говорим о переменных, мы говорим о переменных; тогда мы говорим о значениях, которые они содержат в любой момент выполнения программы. Это может быть, когда мы устанавливаем определенную точку останова, или это может быть всякий раз, когда мы выполняем код и следим за состоянием переменной во время выполнения программы.
- Старт. Это действие просто указывает отладчику начать мониторинг веб-сервера. По сути, он следит за всем, что происходит в программе, и, если установлены какие-либо точки останова, он готов остановить выполнение и позволить нам взглянуть на то, что происходит с состоянием программы. Технически вы можете начать сеанс отладки и ничего не делать. Это не совсем продуктивно, но возможно.
- Шаг в. Предположим на мгновение, что у вас есть точка останова, установленная непосредственно над вызовом функции или при вызове функции. Это позволяет нам войти в функцию, чтобы отслеживать значение каждого аргумента, как они манипулируются внутри функции, что функция возвращает (если что-либо) и все, что происходит внутри функции.
- Шагнуть вперед. С другой стороны, предположим, что вы просматриваете функцию и не уверены, что хотите погрузиться в нее. Возможно, вас интересуют только значения, возвращаемые функцией, или состояние программы после выполнения функции, но вас не интересует, что происходит внутри функции. По сути, вы относитесь к нему как к черному ящику. Вот что значит переступить через функцию. То есть вы позволяете функции работать, не вникая в нее, чтобы посмотреть, как она работает.
- Выйдите. Этот конкретный аспект отладки полезен всякий раз, когда вы оказываетесь в функции и готовы вернуться к основной линии выполнения, потому что вы видели все, что вам нужно было увидеть. Возможно, вы были свидетелем изменения значений переменной, может быть, вы видели, как алгоритм выполняет достаточно работы, чтобы знать, что он сделал то, что вам нужно. Как бы то ни было, это позволит вам выйти из функции с метко названным названием и затем перейти к
- Стоп. Точно так же, как start говорит отладчику начать слушать сервер, обращая внимание на точки останова и отображая информацию о ходе выполнения приложения, stop делает прямо противоположное. Он сообщает отладчику, что мы закончили слушать, наблюдать и обращать внимание на состояние программы. Это не означает, что программа останавливается — только отладчик. Поэтому, если вы перестали обращать внимание на всю информацию, предоставляемую отладчиком, вы, вероятно, в состоянии остановить отладчик.
Последнее замечание, которое я хотел бы сделать, заключается в том, что PHP уникален тем, что предлагает множество общедоступных переменных, таких как $_GET , $_POST, $_REQUEST и так далее. Это также доступные нам переменные, которые мы можем наблюдать. Это не ограничивается только тем, что написано в нашем коде.
Это особенно полезно, когда мы просматриваем данные при перезагрузке страницы, запросах Ajax (например, во время действий GET и POST) и так далее.
2 Установка Xdebug
Хотя это, вероятно, очевидно из предыдущих сообщений этой серии, я собираюсь использовать Visual Studio Code в качестве предпочтительной IDE. Если у вас его нет, то это то, что я рекомендую. Однако, если у вас есть IDE, с которой вам удобно работать, я рекомендую именно ее.
- Код всегда в разработке,
- имеет активную экономику расширений,
- хорошо работает с различными языками, инструментами и т. д.,
- легкий и хорошо сочетается с различными вещами, которые мы можем использовать в разработке WordPress (такими как PHP, HTML и JavaScript).
Кроме того, Code также имеет надежную поддержку Xdebug. Однако, чтобы убедиться, что отладчик установлен правильно, нам нужно убедиться, что у нас установлено расширение с нашей установкой PHP, что оно доступно в нашей системе и может быть выполнено в нашей IDE. Мы собираемся сделать это, но сначала нам нужно убедиться, что Xdebug установлен правильно.
Установка Xdebug
Установить Xdebug очень просто. Из сеанса терминала вам нужно будет выполнить следующую команду:
Как только вы это сделаете, вы заметите несколько вещей, происходящих в окне терминала во время установки. Если вы не особенно заинтересованы, вам не нужно беспокоиться о том, что он делает, пока он не вернет вас в командную строку.
На данный момент модуль Xdebug установлен; однако вам нужно будет сообщить PHP, что он установлен и где он может найти модуль.
Чтобы установить расширение с вашей текущей версией PHP, важно знать, какая версия PHP у вас установлена. Если вы используете менеджер пакетов, то может быть несколько версий, и вам нужно будет указать в файле конфигурации этой конкретной версии, где найти модуль.
И наоборот, если у вас установлена одна версия, вам нужно будет указать одну версию PHP, где она установлена. Во-первых, вы можете найти, где Xdebug находится в файловой системе, используя эту команду:
Затем вам нужно будет обновить файл конфигурации для вашей установки PHP. Для этого просто запустите php -v из командной строки, и он сообщит вам, какую версию вы используете. Отсюда вам нужно будет найти файл инициализации для версии PHP, которую вы используете. Если при запуске php -v вы получите что-то вроде этого:
Это говорит нам о том, что мы используем PHP 7.1.19 (хотя ваша версия может отличаться). Отсюда мы знаем, что нужно искать определенный файл конфигурации PHP для этой версии PHP. Для этого найдите php.ini в каталоге /usr/local/etc/php/7.1/ вашей системы (хотя точный номер версии может отличаться).
Оттуда откройте файл и добавьте следующую строку кода:
zend_extension="/usr/local/lib/php/pecl/20160303/xdebug.so"
Это сообщит PHP, где находится Xdebug, чтобы его можно было использовать в вашей работе.
Тестирование установки
Чтобы убедиться, что установка прошла правильно, вы можете запустить следующий код в своем терминале:
И тогда вы должны увидеть что-то вроде следующего вывода на экран:
Обратите внимание, что на скриншоте выше вы видите следующее:
с Xdebug v2.6.0, Copyright (c) 2002-2018, автор Дерик Ретанс
Это означает, что модуль установлен и PHP знает об этом.
Настройка вашей IDE
В следующем посте мы рассмотрим привязку Xdebug к нашей IDE. Предполагая, что вы выполнили шаги, описанные в этом посте, и все прошло хорошо, вы должны быть готовы к подготовке к отладке проектов WordPress.
Однако, пока мы не запустим его в среде IDE, это не так полезно (или сложнее, чем должно быть). Итак, на следующей неделе мы рассмотрим, как именно это сделать.

