Xdebug - Visual Studio Code - Шаг в / Шаг за шагом - ничего не происходит - PullRequest
1 голос
/ 15 января 2020

У меня проблема с кодом Visual Studio и Xdebug.

Моя система:

Я использую Windows 10 систему с IIS веб-сервер и PHP версия 7.4. Я успешно загрузил и установил Xdebug с последней версией (2.9.0) (см. Выдержку из php.ini ниже). Код Visual Studio настроен для использования Xdebug (см. launch.json файл ниже).

Моя проблема:

Когда я устанавливаю точку останова, она останавливается на этой точке останова , Все идет нормально. Но если я нажимаю кнопки «Шаг в» (F11) или «Шаг в сторону» (F10), то ничего не происходит. Начальная точка останова все еще подсвечивается - она ​​остается на точке останова.

enter image description here

Возможно, что-то настроено неправильно, но на самом деле я не могу понять, что это is.

См. здесь файлы конфигурации:

php .ini:

[XDEBUG]
xdebug.remote_enable = 1
xdebug.remote_handler = dbgp
xdebug.remote_host = localhost
xdebug.remote_port = 9000
xdebug.remote_autostart = 1
xdebug.idekey=VSCODE
xdebug.remote_log ="C:\temp\xdebug.log"

[PHP_XDEBUG-2.9.0-7.4-VC15-NTS]
zend_extension = "C:\Program Files (x86)\PHP\v7.4\ext\php_xdebug-2.9.0-7.4-vc15-nts-x86_64.dll"

запуск. json из Visual Studio Код:

{
    // Verwendet IntelliSense zum Ermitteln möglicher Attribute.
    // Zeigen Sie auf vorhandene Attribute, um die zugehörigen Beschreibungen anzuzeigen.
    // Weitere Informationen finden Sie unter https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "port": 9000,
            "ignore": [
                "**/vendor/**/*.php"
            ]
        },
        {
            "name": "Launch currently open script",
            "type": "php",
            "request": "launch",
            "program": "${file}",
            "cwd": "${fileDirname}",
            "port": 9000
        }
    ]
}

1 Ответ

3 голосов
/ 17 января 2020

Оказалось, что это ошибка в Xdebug, которая может произойти, если все следующие пункты верны:

  • Обработчик ошибок преобразовал предупреждение / уведомление об исключении
  • Для этого параметра была установлена ​​точка прерывания исключения c, или была установлена ​​точка останова исключения с использованием группового символа
  • DBGp eval command , которые IDE часто используют для реализации часов, создают предупреждение или уведомление, в этом случае из-за неопределенной переменной.

Причина была в том, что хотя команда eval поворачивает точки останова с breakpoints_allowed флаг до его запуска, обработчик точки останова для исключения не проверял, был ли установлен этот флаг breakpoints_allowed .

* fix - проверка на наличие флага breakpoints_allowed в обработчике для точек останова исключений и будет частью предстоящего выпуска Xdebug 2.9.2. Если вы не хотите ждать, загрузите Xdebug с Github и обязательно используйте ветку xdebug_2_9 (если вы не хотите go действительно экспериментальной).

...