Xdebug in VMBitrix7.5.1 via VS Code
Крайне скудна информация о настройке XDebug в офф. документации
Решил поделится личным опытом настройки XDebug в Visual Studio Code для работы с проектами в VMBitrix7.5.1
Предполагается что VMBitrix установлена и настроена сеть как "Сетевой мост",
с доступом к серверу по ssh по IP 192.168.0.xxx (см. статью )
В виртуальную машину включён Xdebug из коробки, по этому ставить его не нужно.
0) в консоли сервера определяем IP хоста
1) в VSCode устанавливаем плагин
Name: PHP Debug
Id: xdebug.php-debug
2) смотрим ключ IDE какой указана в настройках плагина (по дефолту там "vsc", его и указываем в .ini в параметре xdebug.idekey)
VSCode File > Preference > Settings > Extensions > PHP Debug > Ide Key.
3) создаем файл если нет
4) прописываем в /etc/php.d/z_bx_custom.ini такие конфиги (192.168.0.102 это IP хоста c IDE, на него xdebug будет отправлять данные через 9003 порт)
5) перезапускаем Apache для обновления конфигураций
6) можем просмотреть настройки Xdebug введя команду в консоли
7) в VSCode создаем файл .vscode/launch.json с такими параметрами
Настройки окончены, далее создаем тестовый файл /test/index.php с элементарным кодом
открываем его в VSCode, выставляем брейкпоинты, и отлаживаем как в этом примере
---------------------------------------------------------------------------------------------------------------------
ВАЖНО:
параметр "pathMappings" содержит пути на удаленном сервере и на локальной машине
где "/" - это адрес папки с кодом (проектом) на сервере,
а "${workspaceRoot}" путь к локальным копиям файлов проекта
ВАЖНО:
смотрим логи xdebug командой в консоли
там может быть ошибка связанная с не верно указанными путями в "pathMappings",
из за чего не появляются переменные в блоке "VARIABLES" в расширении VSCode "PHP Debug" (по сути отладка не работает).
Для этого смотрим настройки соединения с удаленным сервером в .vscode\sftp.json (Ctrl+Shift+P) параметр "remotePath"
и если там указано "remotePath": "/" (т.е корень сервера) то и в .vscode/launch.json должно быть соответственно.
Ссылки по теме:
KCacheGrind для Linux
QCacheGrind для Windows
Крайне скудна информация о настройке XDebug в офф. документации
Решил поделится личным опытом настройки XDebug в Visual Studio Code для работы с проектами в VMBitrix7.5.1
Предполагается что VMBitrix установлена и настроена сеть как "Сетевой мост",
с доступом к серверу по ssh по IP 192.168.0.xxx (см. статью )
В виртуальную машину включён Xdebug из коробки, по этому ставить его не нужно.
0) в консоли сервера определяем IP хоста
echo $SSH_CLIENT | awk '{ print $1}' |
1) в VSCode устанавливаем плагин
Name: PHP Debug
Id: xdebug.php-debug
2) смотрим ключ IDE какой указана в настройках плагина (по дефолту там "vsc", его и указываем в .ini в параметре xdebug.idekey)
VSCode File > Preference > Settings > Extensions > PHP Debug > Ide Key.
3) создаем файл если нет
touch /etc/php.d/z_bx_custom.ini |
4) прописываем в /etc/php.d/z_bx_custom.ini такие конфиги (192.168.0.102 это IP хоста c IDE, на него xdebug будет отправлять данные через 9003 порт)
zend_extension = xdebug.so xdebug.start_with_request = yes xdebug.discover_client_host = true xdebug.client_host = 192.168.0.102 xdebug.client_port = 9003 xdebug.idekey = vsc xdebug.mode = debug,trace,profile xdebug.collect_params = 3 xdebug.trace_output_name = trace.%R.%u xdebug.profile_output_name = cachegrind.out.%R.%u xdebug.output_dir = /tmp xdebug.log = /tmp/xdebug.log |
5) перезапускаем Apache для обновления конфигураций
service httpd restart |
6) можем просмотреть настройки Xdebug введя команду в консоли
php -r 'xdebug_info();' | less -R |
7) в VSCode создаем файл .vscode/launch.json с такими параметрами
{
"version": "0.2.0",
"configurations": [
{
"name": "remote XDebug",
"type": "php",
"request": "launch",
"hostname": "192.168.0.102",
"port": 9003,
"pathMappings": {
"/": "${workspaceRoot}"
}
},
]
} |
Настройки окончены, далее создаем тестовый файл /test/index.php с элементарным кодом
<?
$var=1;
$var++;
echo $var;
$str = "Xdebug";
function ret_ord( $c )
{
return ord( $c );
}
foreach ( str_split( $str ) as $char )
{
echo $char, ": ", ret_ord( $char ), "\n";
}
?> |
открываем его в VSCode, выставляем брейкпоинты, и отлаживаем как в этом примере
---------------------------------------------------------------------------------------------------------------------
ВАЖНО:
параметр "pathMappings" содержит пути на удаленном сервере и на локальной машине
где "/" - это адрес папки с кодом (проектом) на сервере,
а "${workspaceRoot}" путь к локальным копиям файлов проекта
ВАЖНО:
смотрим логи xdebug командой в консоли
tail -f /tmp/xdebug.log |
там может быть ошибка связанная с не верно указанными путями в "pathMappings",
из за чего не появляются переменные в блоке "VARIABLES" в расширении VSCode "PHP Debug" (по сути отладка не работает).
Для этого смотрим настройки соединения с удаленным сервером в .vscode\sftp.json (Ctrl+Shift+P) параметр "remotePath"
и если там указано "remotePath": "/" (т.е корень сервера) то и в .vscode/launch.json должно быть соответственно.
[14044] [Step Debug] <- breakpoint_set -i 7 -t line -f file:///home/bitrix/ext_www/dev1-site.ru/home/bitrix/ext_www/dev1-site.ru/test/index.php -n 3 [14044] [Step Debug] WARN: Breakpoint file name does not exist: /home/bitrix/ext_www/dev1-site.ru/home/bitrix/ext_www/dev1-site.ru/test/index.php (No such file or directory). [14044] [Step Debug] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="7" id="140440038" resolved="unresolved"></response> |
Ссылки по теме:
KCacheGrind для Linux
QCacheGrind для Windows