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


В процессе разработки приходится задействовать самые разные средства. Для обратной связи (отладки) широко распространён отладчик Xdebug. Давайте рассмотрим, как его установить и подключить к Netbeans. На самом деле все просто, если знать некоторые особенности. Установка:

sudo apt install php-xdebug
Переходим в папку /usr/lib/php, находим там папки с названием из чисел и берем какую-то из них. Лично я взял (запомнил) самую последнюю - usr/lib/php/20190902/xdebug.so

Далее надо создать файл для логирования. У меня адрес - /tmp/xdebug/xdebug.log – можно любой другой. Не забудьте дать файлу права на запись, чтобы Xdebug мог писать лог.

Теперь меняем файл /etc/php/5.6/apache2/php.ini (ну или какая там у вас версия PHP и какой файл настроек задействован)

[xdebug]
zend_extension = /usr/lib/php/20190902/xdebug.so
xdebug.default_enable = On; включить xdebug по умолчанию
xdebug.var_display_max_depth = 6; глубина показа дампа массивов и объектов
xdebug.remote_enable = On; включить удаленную отладку
xdebug.remote_host = 192.168.76.6; хост для удаленной отладки
xdebug.remote_port = 9000; порт для удаленной отладки
xdebug.remote_handler = dbgp; протокол для отладки
xdebug.idekey = netbeans-xdebug; идентификатор, который будет отправлять наша IDE
xdebug.remote_autostart = 1; автоматический запуск отладки
xdebug.remote_log=/tmp/xdebug/xdebug.log; лог-файл для удалённой отладки
xdebug.profiler_enable_trigger = 1; запускать профилирование по триггеру
xdebug.profiler_enable = 0; включить профилирование
xdebug.profiler_output_dir = /tmp/xdebug/profiler/; каталог для хранения результатов профилирования
xdebug.show_local_vars = 1; отобразить все локальные переменные в случае возникновения ошибки
xdebug.overload_var_dump = 1; включает усовершенствованный var_dump
Обратите внимание на строку xdebug.remote_host = 192.168.76.6; - тут у вас будет свой адрес.

Вообще, тут указывается адрес локальной машины (127.0.0.1). Однако, если у вас настроен проброс портов или еще какие-то непонятки с сетью виртуальной машины, то прописывайте реальный путь к сайту (хосту), а не внутренний адрес.

Если Xdebug не сможет соединиться, то и напишет что-то типа этого:

Log opened at 2022-01-20 05:33:00
I: Connecting to configured address/port: 10.0.2.15:9000.
W: Creating socket for '10.0.2.15:9000', poll success, but error: Operation now in progress (29).
E: Could not connect to client. :-(
Log closed at 2022-01-31 05:33:00
Если же все в порядке, то лог будет какой-то такой:

Log opened at 2022-01-20 05:40:40
I: Connecting to configured address/port: 192.168.76.6:9000.
I: Connected to client. :-)
-> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///var/www/html/vtigercrm/index.php" language="PHP" xdebug:language_version="5.6.40-26+ubuntu16.04.1+deb.sury.org+1" protocol_version="1.0" appid="3438" idekey="netbeans-xdebug"><engine version="2.5.5"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2017 by Derick Rethans]]></copyright></init>
Также можно проверить и соединение внутри самого нетбинса. Сначала настроим. Выбираем «Сервис» - «Параметры» - «PHP» - «Отладка (Debugging)»

Netbeans

После включения отладки нетбинс должен показать не ожидание, а именно выполнение

Netbeans

Чтобы вставить точку останова можно использовать код:

xdebug_break();
для вывода нужных переменных:

var_dump($table_name,$fileid);
Ну это уже программирование пошло.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.



тегизаметки, NetBeans, отладка, Xdebug, IDE




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




Урок 5. Комментарии PHP
Быстрая галерея на jquery без плагинов
Основы хеширования паролей PHP