Если вы обнаружите это расширение полезным, если оно поможет вам решить ваши проблемы, и если вы цените поддержку, предоставленную здесь, рассмотрите возможность спонсировать нашу работу.
Установите расширение: нажмите F1
, тип ext install php-debug
.
Это расширение является адаптером отладки между VS -кодом и XDebug от Derick Rethans. XDEBUG - это расширение PHP (файл .so
на Linux и .dll
в Windows), который необходимо установить на вашем сервере.
Установите xdebug , я настоятельно рекомендую сделать простой файл test.php
, положить phpinfo();
Оператор там, затем скопируйте вывод и вставьте его в мастер установки XDEBUG. Он проанализирует его и даст вам специально установленные инструкции для вашей среды. Суммируя:
В Windows: загрузите соответствующий предварительный DLL для вашей версии PHP, архитектуры (64/32 бит), безопасности потока (TS/NTS) и версии компилятора Visual Studio и поместите его в папку расширения PHP.
На Linux: либо загрузите исходный код как бродяга, либо клонируйте его с помощью git, затем составьте его. Или посмотрите, предлагает ли ваше распространение предварительно построенные пакеты.
Настройте PHP, чтобы использовать xDebug, добавив zend_extension=path/to/xdebug
к вашему php.ini. Путь вашего php.ini показан в вашем выходе phpinfo()
в «Загруженном файле конфигурации».
Включите удаленную отладку в своем php.ini
:
Для XDebug v3.xx:
xdebug.mode = debugxdebug.start_with_request = да
Для XDebug v2.xx:
xdebug.remote_enable = 1xdebug.remote_autostart = 1xdebug.remote_port = 9000
Существуют и другие способы сказать XDebug подключиться к дистанционному отладчику, например, cookie, параметры запросов или расширения браузера. Я рекомендую remote_autostart
(xdebug v2)/ start_with_request
(xdebug v3), потому что это «просто работает». Существует также множество других вариантов, таких как порт, см. Документацию XDEBUG о удаленной отладке для получения дополнительной информации. Обратите внимание, что порт XDEBUG по умолчанию изменился между XDEBUG V2 на V3 с 9000 на 9003.
Если вы занимаетесь веб -разработкой, не забудьте перезагрузить свой веб -сервер, чтобы перезагрузить настройки.
Проверьте свою установку, проверив выход phpinfo()
для секции XDebug.
В своем проекте перейдите к отладчику, отправьте значок «Маленький снаряжение» и выберите PHP . Для вас будет создана новая конфигурация запуска с тремя конфигурациями:
Слушайте XDebug. Эта настройка просто начнет прослушиваться на указанном порту (по умолчанию 9003) для XDebug. Если вы настроили XDebug, как рекомендовано выше, каждый раз, когда вы делаете запрос с браузером на свой веб -сервер или запускаете сценарий CLI, XDebug подключится, и вы можете остановиться на точках останова, исключения и т. Д.
Запуск в настоящее время открывает скрипт Этот параметр является примером отладки CLI. Он запустит в настоящее время открытый скрипт в качестве CLI, покажет все выходные данные Stdout/Stderr в консоли отладки и завершит сеанс отладки после выхода сценария.
Запустить встроенный веб-сервер. Эта конфигурация запускает встроенный веб-сервер PHP на случайном порте и открывает браузер с директивностью serverReadyAction
. Порт случайный (Localhost: 0), но может быть изменен на желаемый фиксированный порт (Ex: Localhost: 8080). Если необходим сценарий маршрутизатора, добавьте его в Директиву program
. Дополнительные директивы PHP/XDEBUG Trigger отладки при каждой загрузке страницы.
Существуют также конфигурации для установок XDEBUG V2 (Legacy).
Более общую информацию о отладке с кодом VS можно найти на https://code.visualstudio.com/docs/editor/debugging.
Примечание. Вы можете даже отладить сценарий без
launch.json
. Если папка не открыта, а строка состояния кода VS является фиолетовым, нажатиеF5
запустит открытый скрипт с конкретными параметрами xDebug3. Если исполняемый файл PHP не находится в пути, вы можете предоставить ему настройкуphp.debug.executablePath
. Для отладки работы XDEBUG все еще должен быть правильно установлен.
request
: всегда "launch"
hostname
: адрес прислушиваться к прислушиванию xdebug (по умолчанию: все соединения IPv6, если доступны, иначе все подключения IPv4) или сокет домена Unix (префикс с unix://
) или Windows Pipe ( ?pipename
) - не может быть объединено с порт
port
: порт, на котором можно прослушать XDebug (по умолчанию: 9003
). Если порт установлен на 0
случайный порт выбирается системой, а заполнитель ${port}
заменяется выбранным портом в env
и runtimeArgs
.
stopOnEntry
: Будет ли сломаться в начале сценария (по умолчанию: false
)
pathMappings
: Список серверных путей, отображаемых на локальные пути источника на вашей машине, см. «Отладка удаленного хоста» ниже
log
: регистрировать ли все общение между VS -кодом и адаптером к консоли отладки. Смотрите устранение неполадок дальше вниз.
ignore
: необязательный массив шаблонов шаровых, которые следует игнорировать из -за ошибок (например **/vendor/**/*.php
)
ignoreExceptions
: необязательный массив имен классов исключений, которые следует игнорировать (например, BaseException
, NS1Exception
, *Exception
или **Exception*
)
skipFiles
: множество шаблонов шарика, чтобы пропустить при отладке. Звездные узоры и отрицания разрешены, например, **/vendor/**
или !**/vendor/my-module/**
.
skipEntryPaths
: массив шаблонов шаровика, чтобы немедленно отделить и игнорировать отладки, если сценарий входа соответствует (пример **/ajax.php
).
maxConnections
: принять только это количество параллельных сеансов отладки. Дополнительные соединения будут отброшены, и их исполнение будет продолжаться без отладки.
proxy
: настройки прокси DBGP
enable
: для включения регистрации прокси на true
(по умолчанию `false).
host
: адрес прокси. Поддерживает имя хоста, IP -адрес или сокет домена UNIX (по умолчанию: 127.0.0.1).
port
: порт, где адаптер зарегистрируется в прокси (по умолчанию: 9001
).
key
: уникальный ключ, который позволяет прокси соответствовать запросам в ваш редактор (по умолчанию: vsc
). По умолчанию взято из настройки VSCODE php.debug.idekey
.
timeout
: количество миллисекундов, чтобы подождать, прежде чем отказаться от подключения к прокси (по умолчанию: 3000
).
allowMultipleSessions
: если прокси должен пересылать несколько сеансов/соединений одновременно или нет (по умолчанию: true
).
xdebugSettings
: позволяет вам переопределить настройки удаленной отладки Xdebug для тонкой настройки xdebug в соответствии с вашими потребностями. Например, вы можете играть с max_children
и max_depth
чтобы изменить максимальное количество массива и объекта детей, которые извлечены, и максимальная глубина в таких структурах, как массивы и объекты. Это может ускорить отладчик на медленных машинах. Для полного списка имен функций, которые можно установить, обратитесь к документации XDEBUG.
max_children
: максимальное количество массива или объекта детей, чтобы изначально забрать
max_data
: максимальное количество переменных данных для первоначального извлечения.
max_depth
: максимальная глубина, которую двигатель отладчика может вернуть при отправке массивов, хэшей или объектных структур в IDE (не должно быть необходимости изменять это, поскольку глубина получена постепенно, большое значение может привести к висеть IDE).
show_hidden
: эта функция может быть установлена IDE, если она хочет иметь более подробную внутреннюю информацию о свойствах (например, частные члены классов и т. Д.) Ноль означает, что скрытые члены не показаны IDE.
xdebugCloudToken
: вместо того, чтобы слушать локально, откройте соединение и зарегистрируйтесь в облаке Xdebug и принимайте сеансы отладки на этом соединении.
stream
: позволяет влиять на потоки DBGP. XDebug поддерживает только stdout
см. Dbgp stdout
stdout
: перенаправить Stdout Stream: 0 (Disable), 1 (копия), 2 (перенаправление)
Варианты, специфичные для отладки CLI:
program
: Путь к сценарию, который должен быть запущен
args
: Аргументы переданы в сценарий
cwd
: текущий рабочий каталог для использования при запуске сценария
runtimeExecutable
: Path to PHP Binary, используемый для запуска сценария. По умолчанию тот на пути.
runtimeArgs
: дополнительные аргументы, которые можно передать в двоичный файл PHP
externalConsole
: запускает скрипт в окне внешней консоли вместо консоли отладки (по умолчанию: false
)
env
: переменные среды для перехода к сценарию
envFile
: необязательный путь к файлу, содержащему определения переменных среды
Линейные точки останова
Условные точки останова
Hit Count Count Prakepoints: поддерживает такие условия, как >=n
, ==n
и %n
Функция точек останова
Зайдите, вмешайтесь, выйдите
Перерыв на входе
Начните с остановки на входе (F10/F11)
Нарушение непредучанных исключений и ошибок / предупреждений / уведомлений
Несколько параллельных запросов
Следы стека, переменные области, суперглобалы, пользовательские константы
Массивы и объекты (включая имя класса, частные и статические свойства)
Отладочная консоль
Часы
Установить переменные
Бежать как cli
Беги без отладки
Регистрация и нерегистрация DBGP
Поддержка облака XDEBUG
Чтобы отлаживать запущенное приложение на удаленном хосте, вам нужно сообщить XDebug подключиться к другому IP, чем localhost
. Это может быть сделано либо путем установки xdebug.client_host
на ваш IP или установив xdebug.discover_client_host = 1
, чтобы xdebug всегда подключался к машине, который сделал веб -запрос. Последний - единственная настройка, которая поддерживает несколько пользователей отладки одного и того же сервера и «просто работает» для веб -проектов. Опять же, см. Документацию XDEBUG на эту тему для получения дополнительной информации.
Чтобы сделать карту кода VS файлы на сервере для правильных файлов на вашей локальной машине, вам нужно установить настройки pathMappings
на вашем запуске.json. Пример:
// Server -> Local "Pathmappings": {"/var/www/html": "$ {workspacefolder}/www", "/app": "$ {workspacefolder}/app"}
Пожалуйста, также обратите внимание, что установление любого из вариантов отладки CLI не будет работать с удаленной отладкой хоста, потому что сценарий всегда запущен локально. Если вы хотите отладить сценарий CLI на удаленном хосте, вам нужно запустить его вручную из командной строки.
Отладчик может зарегистрироваться в прокси DBGP с ключом IDE. Затем прокси будет перенаправить IDE только те сеансы DBGP, которые имеют указанный ключ IDE. Это полезно в многопользовательской среде, где разработчики не могут одновременно использовать один и тот же порт DBGP. Необходима тщательная настройка, что запросы на веб -сервер содержат соответствующий ключ IDE.
Официальная реализация dbgpproxy.
Также рекомендуется расширение браузера XDEBUG . Там можно легко настроить ключ стороны запроса IDE.
Задайте вопрос о Stackoverflow
Если вы думаете, что нашли ошибку, откройте проблему
Убедитесь, что у вас есть последняя версия этого расширения, и XDebug установлен
Попробуйте простой файл PHP, чтобы воссоздать проблему, например, из TestProject
Установите "log": true
в вашем запуске.json и наблюдайте за консольной панелью отладки.
В вашем php.ini установите xdebug.log = /path/to/logfile
(убедитесь, что у вашего веб -сервера есть разрешения на запись в файл)
Обратитесь в Twitter @damjancvetko
Чтобы взломать этот адаптер, клонируйте репозиторий и откройте его в VS -коде. Вам нужны Nodejs с установленным NPM и на вашем пути. Также должны быть установлены недавние PHP и XDEBUG и на вашем пути.
Установите пакеты NPM, запустив npm install
в командной строке в каталоге проекта или выберите Terminal / Run Task... / npm / npm: install
в меню кода VS.
Запустите процесс сборки / просмотра, запустив npm run watch
On Command Line в каталоге проекта или выберите Terminal / Run Build Task...
в меню кода VS.
Начните адаптер отладки, открыв боковую панель запуска и отладки, выбрав конфигурацию Debug adapter
и нажав на стрелку зеленого запуска (или нажав F5
). Скомпилированный адаптер будет запущен в «режиме сервера» и прослушиванием порта TCP 4711.
Запустите отдельный экземпляр кода VS, называемый «хост разработки расширения», запустив code testproject --extensionDevelopmentPath=.
В командной строке в каталоге проекта или выберите запуск Launch Extension
и конфигурацию отладки и нажатие стрелки зеленого запуска. Еще один ярлык - запустить npm run start
. Вы также можете запустить инсайдеры сборки кода VS для тестирования новых функций.
В debugServer
«Host Development Development .vscode/launch.json
открыть. Запустите сеанс отладки PHP, выбрав нужную конфигурацию и нажав F5
. Теперь вы можете отладить тестовый процесс, как указано выше, и установить точки останова в экземпляре первого кода VS, чтобы пройти через код адаптера.
Подробнее о расширениях тестирования можно найти на https://code.visualstudio.com/api/working-with-extensions/testing-extension.
Тесты записываются с помощью мокко и могут выполняться с помощью npm test
или из Terminal / Run Task... / npm: test
. Когда вы отправляете PR, тесты будут выполнены в CI на Linux, MacOS и Windows против нескольких версий PHP и XDEBUG.
Перед тем, как отправить пиар, также запустите npm run lint
или Terminal / Run Tasks... / npm: lint
.