Настройка XDebug в CodeLobster IDE


Настройка XDebug в CodeLobster IDE

Перед запуском нового PHP проекта, нам следует подумать о работе над ошибками до того, как эти ошибки возникнут.

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

В этой статье мы изучим, как работает CodeLobster IDE в связке с XDebug, а так же рассмотрим настройку этого расширения на локальном сервере XAMPP.

Безусловно, CodeLobster позаботится о соблюдении правил синтаксиса языка благодаря подсветке кода, подсказкам по функциям и автозавершению.

В то же время программисты не застрахованы от логических ошибок в своих скриптах.

Например, в PHP возможна такая конструкция:

<?php
$a = array('a' => 'first', 'b' => 2, 'c' => true);

Или нечто подобное:

<?php
$n = 5;
//И где-то через 100 строчек кода...
$n = 'User Name';

Конечно, в Java или в C++ такой трюк с массивами или переменными не пройдёт, так как это строго типизированные языки программирования.

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

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

Включаем показ ошибок и предупреждений в PHP

Открываем в текстовом редакторе файл php.ini, который в нашем случае расположен в папке "D:\xampp-portable\php" и устанавливаем следующие параметры:

display_errors = On
error_reporting = E_ALL

Можно осуществить настройку программно, вставив в начало скрипта такой код:

<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL);

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

Включение расширения XDebug и настройка IDE

Для того, чтобы активировать XDebug, откройте файл php.ini и найдите соответствующий раздел [XDebug]. Подключаем расширение, установив такие опции:

zend_extension = "\xampp-portable\php\ext\php_xdebug.dll"

Таким образом мы указали PHP движку расположение расширения.

xdebug.remote_enable = 1

Собственно, эта опция и включает отладку, позволяя дебаггеру подключаться к IDE и отправлять данные.

xdebug.remote_host = "127.0.0.1"
xdebug.remote_port = "9000"

Устанавливаем хост и порт - это адрес машины на которой будет работать клиент, в данном случае - это наша IDE.

Запускаем XAMPP и открываем CodeLobster, переходим в главное меню программы -> "Tools" -> "Preferences", в открывшемся диалоговом окне выберем пункт "Debugger".

В качестве параметра "Virtual folder" выберем корневую директорию XAMPP "htdocs" - это та папка, в которой будут расположены виртуальные сайты и наш тестовый проект в том числе.

В поле "Start URL" укажите базовый адрес "http://localhost/" - это URL корневой директории виртуального сервера.

Значение опции "Port" оставляем по умолчанию, так как именно это значение используется дебаггером в большинстве случаев.

Нажимаем "OK" и можно приступать к рассмотрению тестового приложения. Созданный нами проект содержит один PHP файл с таким содержимым:

<?php
    for($i = 0; $i < 10; $i++){
        echo power2($i);
    }

    function power2($base){
        return pow($base, 2) . "<br />";
    }
?>

Здесь мы в цикле вызываем функцию power2() и передаём ей текущее значение счётчика $i, последовательно, от 0 до 9. Этот метод возводит переданное значение в степень 2 и возвращает каждый полученный результат в отдельной строке.

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

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

Теперь вы можете проходить по каждой строчке кода последовательно, нажимая клавишу F11, или по  брекпоинтам, повторно нажимая F5.

Точки остановки добавляются и удаляются кликом мыши слева от номера строки в редакторе, или нажатием клавиши F9.

Причём, в каждый момент, когда курсор останавливается мы имеем возможность получить полную информацию о текущем состоянии приложения, пользуясь вкладками на нижней панели IDE.

Вкладка "Call Stack" позволяет проследить всю последовательность вызовов функций до текущего момента, а именно, тот путь, который прошёл интерпретатор по нашему коду.

Вкладка "Locals" отражает текущее состояние переменных в контексте нашего приложения. В данном примере можно на любом шаге в процессе отладки узнать значение счётчика $i, а так же содержимое глобальных и супер глобальных переменных, таких как $_GET, $_POST, $_SERVER и других.

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

Полезной является возможность добавлять переменные в список наблюдения, так называемый Watch list. Воспользуйтесь для этого контекстным меню, кликните на переменной и выберите пункт "Add Watch" или с помощью горячих клавиш Alt + Shift + W.

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

Остановить процесс отладки можно в любой момент нажатием клавиш Shift + F5.

Итак, подведём итог:

CodeLobster легко интегрируется с XDebug, программа практически не требует настроек и процесс отладки организован предсказуемо и понятно даже для начинающего разработчика.

Настройка XDebug для взаимодействия с IDE, как вы смогли уже убедиться, тоже не вызывает никаких трудностей.

Теперь вы знаете эффективный способ ускорить процесс поиска и устранения ошибок в своих приложениях и сможете избежать громоздких конструкций в своём коде, наподобие функций var_dump() или print_r().

© RemiZOffAlex