Xdebug sublime text 3 настройка

Обновлено: 04.07.2024

Начиная

Настройка Xdebug

Нам нужно настроить xdebug, добавив следующее в файл php. ini или, что еще лучше, в файл xdebug. ini как описано здесь в разделе «Практические xdebug. ini по Linux».

В общем, вы будете использовать 127.0.0.1 в качестве хоста. Однако, если вы используете vagrant, например, вы будете использовать что-то вроде 10.0.2.2, в зависимости от того, где Xdebug может найти вашу систему.

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

Не забудьте перезапустить ваш веб-сервер!

Настройка Sublime Text 3

После того, как вы установили управление пакетами, вы должны запустить Sublime Text 3. Откройте командную палитру из меню инструментов и найдите «install package».

Теперь вы можете искать любой пакет, который вам нравится. В нашем случае мы будем искать пакет «Клиент Xdebug».

Откройте только что созданный файл проекта. Содержание будет выглядеть так:

Мы собираемся добавить еще несколько строк:

Как вы можете видеть, я только добавил URL к моему настоящему веб-приложению. Я мог бы установить больше настроек для Xdebug, однако этого достаточно для начала. Я мог бы также установить этот URL в настройках самого Xdebug, но в этом случае я не мог работать над несколькими проектами без необходимости каждый раз изменять конфигурацию Xdebug.

Контрольные точки

Мы можем добавить точку останова, щелкнув правой кнопкой мыши по строке, перейдя к Xdebug, а затем нажав добавить / удалить точку останова. Маркер будет добавлен к желобу линии, чтобы указать, что точка останова была установлена.

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

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

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

Итак, наше приложение остановилось, и теперь мы можем просматривать определенные переменные. Тем не менее, мы сделали, и мы хотим двигаться дальше. Что теперь? Когда вы снова щелкните правой кнопкой мыши и наведите курсор мыши на меню Xdebug, у вас будет несколько вариантов:

Бежать и останавливаться довольно легко понять. Методы шага могут быть немного запутанными. Давайте углубимся в это на простом примере.

Представьте, что вы добавили точку останова к первой строке панели методов. Таким образом, в строке с комментарием точки останова ( // breakpoint ).

С шагом в, отладчик перейдет в метод fooBar и остановится на первой строке. Так что в этом случае отладчик остановится на return array_values($arr); линия.

Наконец, с выходом он будет проходить через весь метод bar и вернется к вызывающей стороне. В этом случае он выйдет из объекта обратно к исходному вызывающему.

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

Вывод

В этой статье мы увидели, как мы можем интегрировать Xdebug с Sublime, и убедились, что понимаем, как отлаживать. Почти каждая IDE, подходящая для PHP, может интегрироваться с Xdebug. Если вы заинтересованы в такой отладке в Netbeans, посмотрите статью, упомянутую во введении. Вы используете точки останова? Или вы используете функции PHP, такие как var_dump, для получения данных отладки? Дайте нам знать в комментариях ниже!

Качаем версию Sublime Text 3 для нашей ОС, устанавливаем, запускаем.

Устанавливаем Node. js

Для работы некоторых плагинов нам понадобиться Node. js и Python, качаем и устанавливаем node. js. При установке, оставляем все по умолчанию.

Устанавливаем Python

Далее скачиваем и устанавливаем Pyton, последний релиз, ссылка типа Windows x86(или x64) web-based installer.

Устанавливаем Ruby и RubyGems

Должна начаться установка RubyGems.

Устанавливаем Package Control

Теперь, чтобы установить или удалить плагин для Sublime Text, жмем ctr+shift+p, вводим install Package

Я специально проставил ссылки на все плагины Sublime Text 3, чтобы лучше понять, как они работают, не поленитесь пройти по ним и прочесть оригинальные инструкции.

Топ плагины Sublime Text.

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

Настройки для двух последних версий браузеров:

Аналоги этого плагина уже имеются для Bootstrap 4, (Bootstrap 4 Snippets и Bootstrap 4 Autocomplete) хотя пока чаще используется Bootstrap 3.

Начиная

Прежде всего, нам нужно установить расширение PHP Xdebug. Если вы не уверены, как это сделать, посмотрите на ссылку, приведенную во введении. Убедитесь, что Xdebug работает, проверив, указан ли он в вашем phpinfo() .
Конечно, нам также нужен Sublime Text. Я буду использовать последнюю версию: Sublime Text 3. Он также должен работать с Sublime Text 2.

Настройка Xdebug

Нам нужно настроить xdebug, добавив следующее в файл php.ini или, что еще лучше, в файл xdebug.ini как описано здесь в разделе «Практические xdebug.ini по Linux».

В общем, вы будете использовать 127.0.0.1 в качестве хоста. Однако, если вы используете vagrant, например, вы будете использовать что-то вроде 10.0.2.2, в зависимости от того, где Xdebug может найти вашу систему.

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

Не забудьте перезапустить ваш веб-сервер!

Настройка Sublime Text 3

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


После того, как вы установили управление пакетами, вы должны запустить Sublime Text 3. Откройте командную палитру из меню инструментов и найдите «install package».


Теперь вы можете искать любой пакет, который вам нравится. В нашем случае мы будем искать пакет «Клиент Xdebug».

Откройте только что созданный файл проекта. Содержание будет выглядеть так:

Мы собираемся добавить еще несколько строк:

Как вы можете видеть, я только добавил URL к моему настоящему веб-приложению. Я мог бы установить больше настроек для Xdebug, однако этого достаточно для начала. Я мог бы также установить этот URL в настройках самого Xdebug, но в этом случае я не мог работать над несколькими проектами без необходимости каждый раз изменять конфигурацию Xdebug.

Теперь мы можем запустить сеанс Xdebug, чтобы увидеть, все ли настроено правильно. В меню выберите «Инструменты -> Xdebug» и нажмите «Начать отладку» (запустить браузер). Вы заметите, что ваш веб-сайт открыт и что ?XDEBUG_SESSION_START=sublime.xdebug добавляется в конец URL-адреса. Это запустит сеанс xdebug. В Sublime появляются некоторые дополнительные панели, на которых будет отображаться отладочная информация, после того, как вы установили одну или несколько точек останова.

Контрольные точки

Мы можем добавить точку останова, щелкнув правой кнопкой мыши по строке, перейдя к Xdebug, а затем нажав добавить / удалить точку останова. Маркер будет добавлен к желобу линии, чтобы указать, что точка останова была установлена.


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

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

В этом контексте вы увидите все глобальные переменные, а также переменные, которые вы определили сами. Вы можете нажать на эти переменные, чтобы увидеть, что именно эти переменные содержат. Например, на скриншоте ниже я щелкнул по переменной $ _SERVER.


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

Итак, наше приложение остановилось, и теперь мы можем просматривать определенные переменные. Тем не менее, мы сделали, и мы хотим двигаться дальше. Что теперь? Когда вы снова щелкните правой кнопкой мыши и наведите курсор мыши на меню Xdebug, у вас будет несколько вариантов:

  • Запустить который будет запускать приложение до следующей точки останова или до окончания.
  • Run to line, которая будет работать до той строки, на которую вы нажали
  • Шаг в , шаг в текущую функцию и останавливается сразу после.
  • Step over Перешагнет текущую функцию и сразу остановится.
  • Step out Выход из текущей функции и остановка сразу после.
  • Стоп Остановит отладку.
  • Отделить также прекратит отладку.

Бежать и останавливаться довольно легко понять. Методы шага могут быть немного запутанными. Давайте углубимся в это на простом примере.

Представьте, что вы добавили точку останова к первой строке панели методов. Таким образом, в строке с комментарием точки останова ( // breakpoint ).

С шагом в, отладчик перейдет в метод fooBar и остановится на первой строке. Так что в этом случае отладчик остановится на return array_values($arr); линия.

Шаг за шагом вызовет метод, но не остановит. Он остановится на следующей доступной строке после вызова метода. Так что в этом случае он остановится на return $arr;

Наконец, с выходом он будет проходить через весь метод bar и вернется к вызывающей стороне. В этом случае он выйдет из объекта обратно к исходному вызывающему.

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

Вывод

В этой статье мы увидели, как мы можем интегрировать Xdebug с Sublime, и убедились, что понимаем, как отлаживать. Почти каждая IDE, подходящая для PHP, может интегрироваться с Xdebug. Если вы заинтересованы в такой отладке в Netbeans, посмотрите статью, упомянутую во введении. Вы используете точки останова? Или вы используете функции PHP, такие как var_dump, для получения данных отладки? Дайте нам знать в комментариях ниже!


Xdebug – это PHP-расширение, которое предлагает продвинутые возможности отладки, такие как точки останова, просмотр переменных, а также более глубокий отчет об ошибках.

Ставим Xdebug

Xdebug должен быть установлен в вашей локальной системе, будь то MAMP, Vagrant или любое другое решение. В данном руководстве я рассмотрю то, как установить Xdebug на Vagrant с Varying Vagrant Vagrants (VVV). На MAMP запустить его не составит труда.

В VVV по умолчанию уже стоит Xdebug, однако его нужно вручную активировать. Сделать это можно, подключившись через SSH на Vagrant (vagrant ssh) и запустив xdebug_on. Вы должны будете это делать всякий раз, когда вы уничтожаете и заново создаете экземпляр Vagrant.

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

xdeb

Такое описание является более дескриптивным – оно показывает вам трассировку ошибки, т.е. вы можете понять, что привело к этой ошибке; также вы можете получить лучшее представление о контексте ошибки.

Однако Xdebug может гораздо больше! Чтобы получить остальную часть отладочных возможностей Xdebug, вам понадобится клиент Xdebug – я хочу показать вам, как подцепить плагин Sublime Text Xdebug.

Для начала устанавливаем плагин, используя Sublime Text Package Control (который, естественно, уже установлен у вас), нажав CTRL-SHIFT-P и выбрав «Package Control: Install Package», после чего выбрав «Xdebug Client».

s1

После того как клиент будет установлен, вам нужно сконфигурировать его для корректного взаимодействия с Xdebug VVV. Открываем настройки Xdebug Client, нажав CTRL-SHIFT-P, после чего выбираем «Preferences: Xdebug Settings – User» (вы можете видеть и другие доступные опции, выбрав «Preferences: Xdebug Settings – Default»).

Просто измените «/path/to/vagrant-local/www» на абсолютный путь к вашей www-папке VVV, и Sublime Text Xdebug Client будет знать, где искать ваш локальный код.

Используем Xdebug

Теперь, когда Xdebug активирован и связан с Sublime Text, вы можете управлять Xdebug Client путем нажатия CTRL-SHIFT-P и запуска различных Xdebug команд.

s2

Одна из самых полезных возможностей Xdebug – это возможность добавлять точки останова и выполнять код строка за строкой. Допустим, что вы столкнулись с загадочной ошибкой, и вы хотите понять, что происходило на определенном участке вашего кода.

s3

Таким образом, у нас есть код, у нас есть пост, который выводится без текста «THE PLUGIN WORKS» в самом конце, и мы не знаем, почему так происходит. Давайте добавим точку останова. Перемещаем курсор на строку 25 и нажимаем «CMD-F8» или «CMD-SHIFT-P», после чего ищем «Xdebug: Add/Remove Breakpoint».

s4

Небольшой кружочек рядом со строкой означает, что у нас установлена в ней точка останова. Убедитесь в том, что Xdebug включен в VVV, после чего подключите Sublime Text к VVV Xdebug, запустив команду «Xdebug: Start Debugging» (CMD-SHIFT-F9).

Возвращаемся обратно в браузер и обновляем страницу. Все будет выглядеть так, словно она начала загружаться, после чего загрузка остановилась. Это вызвано тем, что точка останова вступила в работу и приостановила процесс PHP, вследствие чего вы можете видеть некоторый результат. Переключитесь обратно на Sublime Text. Вы увидите нечто следующее:

s5

Желтая стрелочка помечает строку, в которой выполнение PHP было приостановлено, эта строка еще не была запущена. Окно Xdebug Context отображает локальные и глобальные переменные, которые в данный момент доступны. Окно Xdebug Stack показывает весь путь к данной точке в процессе работы (какая цепочка функций привела к вызову текущей функции).

Для выявления данной ошибки нам нужно обратить внимание на Xdebug Context. Мы хотим понять, почему к переменной $content не было ничего добавлено. Если я разверну объект $this, чтобы мы могли проинспектировать локальную переменную to_append, я увижу, что эта переменная пуста:

s6

Как только исправление было сделано, я могу вновь обновить страницу. Точка останова сработает снова, и на сей раз я увижу в Xdebug Context, что все работает, как положено:

s7

Если я запущу Xdebug: Stop Debugging (и Xdebug: Restore Layout), то страница закончит свою загрузку и я смогу убедиться в том, что плагин работает, как положено:

s8

Углубляемся в отладку

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

s9

Используя следующие три step-функции, вы можете:

  • Step Into – входить в функцию, вызванную в текущей строке, и продолжать отладку. Используйте Step Into, если вы получили неожиданные результаты функции и хотите заняться дальнейшим исследованием ее.
  • Step Out – выходить из текущей функции до функции, которая вызывала ее (см. Xdebug Stack).
  • Step Over – запускать текущую строку и переходить к следующей строке. Неоднократное выполнение этой функции позволяет вам пошагово двигаться по функции и видеть, что происходило.

Забавно даже просто перемещаться по коду без ошибок и видеть все в замедленном действии.

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

Настройка отладки php-кода при помощи Xdebug

Классические методы отладки на PHP — использование функций error_log, print_r и var_dump. Их проблема в том, что они не помогают отслеживать сам процесс работы кода. Однако с этой задачей справляется Xdebug — один из самых популярных инструментов среди PHP-разработчиков, которые хотят работать, а не страдать.

В этой статье будет рассмотрена отладка PHP с помощью связки Xdebug и VSCode. Если вы пользуетесь PHPStorm, то проблем тоже не будет — настройка выполняется даже проще и быстрее.

Возможности Xdebug

Xdebug — это расширение для PHP, которое позволяет использовать удаленный отладчик в IDE через брейк-пойнты. С его помощью вы можете отслеживать значения переменных. Как итог — ошибки в коде обнаруживаются быстрее, чем при использовании error_log, print_r и var_dump.

Еще одна полезная функция — трассировка стека. Она выводит подробный путь, который привел приложение к ошибке. Он содержит параметры, переданные в функцию. Xdebug также можно использовать как профайлер для поиска узких мест кода. Если добавить внешние инструменты, то получится визуализировать графики производительности. Например, можно использовать WebGrind — набор PHP-скриптов для удобного вывода статистики прямо в браузере.

Кроме того, с помощью Xdebug вы можете проследить, какая часть кода выполняется в процессе запроса. Это дает информацию о том, как хорошо код покрыт тестами.

Подключение Xdebug

Для работы Xdebug PHP должен быть в режиме CGI. Посмотрим на примере хостинга Timeweb, как его включить.

Подключаемся к серверу через SSH. Можно использовать консоль в панели управления Timeweb.

Переходим в папку cd-bin сайта:

Создаем символическую ссылку командой:

Остаемся в директории cgi-bin и копируем файл php.ini:

Добавляем в файл .htaccess сайта две строки:

Теперь мы можем управлять параметрами PHP директивами в файле php.ini. Он находится в папке cgi-bin. Открываем его и вставляем в конце следующие строки:

Если указанный порт занят, укажите другой. Можно использовать стандартный для Xdebug — 9000. В качестве idekey я указал VSCODE. Если будете настраивать конфигурацию для PHPStorm, впишите его.

Настройка PHP для Xdebug

Чтобы проверить, работает ли Xdebug, создадим в корне сайта файл Myfile.php со следующим содержимым:

Открываем файл в браузере и проверяем, что все параметры указаны верно.

Организация удаленного подключения

Чтобы выполнять PHP Debug на локальной машине, нужно настроить связь IDE и сервера через SSH-туннель.

На Linux все выполняется парой команд.

Приватный ключ сохраняется на локальной машине, а публичный добавляется на сервер. Подробнее об этом, а также о настройке SSH на Windows, вы можете узнать из этой статьи.

На Linux туннель создается командой:

На Windows туннель настраивается через утилиту PuTTY.

  1. На вкладке Session указываем имя сервера и номер порта 1024. Проверяем, чтобы был отмечен протокол SSH.
  2. Переходим в раздел Connection — Data. Указываем логин.
  3. Переходим в раздел Connection — SSH — Tunnels. Указываем параметры так, как указано на скриншоте. Номер порта пишем тот, который используется в конфигурации PHP на сервере.
  4. Возвращаемся в раздел Session и нажимаем на кнопку Open. Подтверждаем корректность ключей (только первый раз).

Сессия сохранится под тем именем, которое мы указали в разделе Session. В дальнейшем нужно будет просто запускать ее заново.

Настройка VSCode

Чтобы работать с Xdebug в VSCode, установим два расширения: Sync-Rsync и PHP Debug. Первое нужно для работы с удаленным сервером, второе — для отладки скриптов.

  1. Открываем в VSCode раздел Extensions (можно использовать сочетание клавиш Ctrl+Shift+X).
  2. Находим и устанавливаем расширение Sync-Rsync.
  3. Находим и устанавливаем расширение PHP Debug.

После установки расширений создаем на локальной машине пустую папку и открываем ее через VSCode: «Файл» — «Открыть папку».

Добавляем подпапку .vscode, создаем внутри нее файл settings.json и прописываем в нем настройки для Sync-Rsync.

Путь /home/user/.ssh/id_rsa — это место, где лежит файл с закрытой частью SSH-ключа.

После сохранения файла settings.json нажимаем в VSCode F1, выполняем команду Sync Remote to Local. В локальную папку, указанную в настройках, скопируются все файлы с сервера.

Синхронизация с сервером

Затем нажимаем на иконку отладки и на шестеренку. В папке .vscode появится файл launch.json. В него тоже нужно внести изменения:

На этом настройка IDE завершена. Можно приступать к тестированию кода.

Debug кода

Мы настроили среду, теперь разберемся, как пользоваться Xdebug.

  1. Изменим содержимое файла Myfile.php, который мы создали при подключении отладчика. Добавим в него функцию, которую хотим проверит ь.
  2. Чтобы загрузить измененный файл на сервер, нажимаем на клавишу F1 и выполняем команду Sync-Rsync: Sync Local to Remote.
  3. Открываем файл в браузере и проверяем, что синхронизация работает.
  4. Расставляем в VSCode брейк-пойнты, которые нужны для отладки.

Переходим в режим «Отладка» и проверяем, что выделен пункт Listen for XDebug. Нажимаем на зеленый треугольник или на клавишу F5.

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

Отладчик Xdebug

Профилирование с визуализацией результатов

Чтобы использовать Xdebug profiler на полную мощность, установим WebGrind. Это набор скриптов, который выводит статистику в браузере. С его помощью можно посмотреть список вызванных функций, количество вызовов, общее затраченное время на вызов и выполнение.

  1. Скачиваем WebGrind с GitHub.
  2. Загружаем архив на сервер и распаковываем файлы в корне сайта.
  3. Создаем папку, в которой будут храниться логи.
  4. Добавляем в файл php.ini две директивы:

Затем нужно открыть файл config.php, который находится в распакованной папке webgrind-master. В нем отредактируем две строки:

Функции можно скрывать или раскрывать, чтобы посмотреть развернутую статистику. Инструмент также умеет отображать графы вызова функций — для этого используется режим Show Call Graph.

Вывод: когда использовать Xdebug?

Xdebug существенно упрощает отладку PHP-кода. Конечно, если ваш текущий инструментарий удовлетворяет все потребности в поиске багов, то устанавливать дополнительное расширение смысла нет. Но, как показывает практика, без Xdebug сложно провести правильное модульное тестирование или отладку через удаленные брейк-пойнты с возможностью пошаговой проверки кода.

Читайте также: