Xdebug of Laravel Dusk in Netbeans on Homestead

Xdebug of Laravel Dusk in Netbeans on Homestead

在 Laravel Homestead 中,我已经能够使用 Xdebug 进行单元测试、功能测试、在浏览器中探索等等。

但是当我尝试为 Dusk 使用 Xdebug 时它挂起(在 tests/Browser 文件夹中测试)。

我认为这些问题可能会有所帮助,但我仍然没有得到它的工作:

我尝试过各种方法,包括:

export XDEBUG_CONFIG="idekey=netbeans-xdebug remote_connect_back=0 remote_host=10.0.2.2"
php artisan dusk

export XDEBUG_CONFIG="idekey=netbeans-xdebug remote_host=10.0.2.2"
php -dxdebug.remote_autostart=on -dxdebug.remote_connect_back=off -dxdebug.remote_host=10.0.2.2 artisan dusk

等等。

我在 Netbeans 中启用了 "Stop at First Line" 调试选项,Netbeans 确实成功地停止在 artisan 文件中的第一个可执行文件 PHP 行。

因此我认为 export XDEBUG_CONFIG="idekey=netbeans-xdebug remote_connect_back=0 remote_host=10.0.2.2" 设置正确。

但是在我单击 "play" 按钮以允许代码继续后,Netbeans 只是在右下角显示 "netbeans-xdebug running",而控制台只是挂起,光标在该行下方闪烁:php artisan dusk tests/Browser/ExampleTest.php

我需要如何更改 Xdebug 的用法才能使其在 Dusk 中也能正常工作?

如我的回答,有一个选项运行 php -dxdebug.remote_enable=1 -dxdebug.remote_host=10.0.2.2 -dxdebug.remote_port=9000 -dxdebug.remote_handler=dbgp artisan my:command

您还可以将这些参数添加到 xdebug.ini,如下所示:

zend_extension_ts = "./php/ext/php_xdebug<-version-number>.dll"
xdebug.remote_enable=1
xdebug.remote_host=10.0.2.2
; Port number must match debugger port number in NetBeans IDE Tools > Options > PHP
xdebug.remote_port=9000
xdebug.remote_handler=dbgp

xdebug.idekey=netbeans-xdebug (although I think it should work without this too)

尝试删除首行中断选项。也可以尝试使用这些选项直接从控制台进行 运行 调试。最后检查是否将正确的端口设置为在 NetBeans 和 xdebug 中侦听,因为这也可能导致问题。

它不起作用,因为 Dusk 在单独的进程中执行实际的 PHPUnit 测试,所以它不知道 XDEBUG_CONFIG

原则上,直接执行 Dusk 测试仍然有效 (phpunit tests/Browser/ExampleTest.php)。 php artisan dusk 的主要功能是自定义 .env.dusk[.local] 文件。

如果您不需要,可以尝试直接致电给他们。然后 Xdebug 的行为应该与它对所有其他 PHPUnit 测试的行为相同。