xdebug vscode docker Запуск и отладка из командной строки, терминала. Пример launch.json

Видео-обзор конфигурации ниже для запуска консольного скрипта: https://youtu.be/Br9l8yXNHZE

Конфиг xdebug

По аналогии с обычной установкой (см. наш пример для линукса) в xdebug.ini укажем 5 опций:

zend_extension=xdebug
xdebug.mode=debug
xdebug.client_host=host.docker.internal
xdebug.client_port=9003
xdebug.idekey="netbeans-xdebug"

где:

  • xdebug.idekey -- не важно что, мы оставили netbeans-xdebug для того, чтобы можно было проводить отладку и в нетбинс
  • host.docker.internal -- важная штука, это "доменное имя" заменяет адрес нашей реальной ОС, в которой и стоит IDE, которая будет слушать сообщения от xdebug

launch.json

Добавим/поправим конфигурацию в .vscode/launch.json - можно использовать подход вроде:

{
    "name": "Listen for Xdebug",
    "type": "php",
    "request": "launch",
    "port": 9003,
    "pathMappings": {
        "/var/www": "${workspaceRoot}",
    }
},

Где для докера очень важно отражение путей:

"/var/www": "${workspaceRoot}",

-- в моем случае я говорю, что директория /var/www внутри контейнера соответствует корню проекта (vscode использует для этого заменитель ${workspaceRoot} )

Запуск PHP скрипта в терминале

Запуск скрипта в терминале тут нуждается в указании на то, что xdebug нужно активировать, запускать будем напр. так:

php -d xdebug.start_with_request=yes вашскрипт.php

например для codeception:

php -d xdebug.start_with_request=yes vendor/bin/codecept run tests/functional/api/v1/UserCest.php:getInfo

-- тут в роли файла скрипта выступает vendor/bin/codecept (в вашем случае тоже расширение файла может быть или не быть), а далее идут уже параметры, для codeception.

Примечание: чтобы xdebug не работал все время, мы не стали добавлять параметр

xdebug.start_with_request=yes 

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

Key Words for FKN + antitotal forum (CS VSU):

vedro-compota's picture

Чтобы проще разбираться с проблемами (если xdebug не подключается), можно включить логгирование внутри IDE vscode для процесса отладки ("log": true,):

{
    "name": "Listen for Xdebug",
    "type": "php",
    "request": "launch",
    "port": 9003,
    "log": true,
    "pathMappings": {
        "/var/www": "${workspaceRoot}",
    }
},

_____________
матфак вгу и остальная классика =)