如何在 VSCode 中调试 Homestead 中的 Laravel 代码?(XDebug + PHPUnit)

在我的文章《调试: 配置 VSCode + Xdebug + PHPUnit 》中收到一些很好的反馈后,有几个人请我帮他们在 Laravel Homestead 环境中配置 Xdebug 设置。 添加一个虚拟机确实会增加一些复杂性,但是拥有一个适当的调试环境的好处远远大于最初的调试工作。

下面假设你已经为项目安装了 Homestead。


Homestead 中启用 Xdebug

1. SSH 连接到你的 Homestead:

homestead ssh

2. 使用 Homestead 的 xon 命令启用 Xdebug:

xon

3. 找到虚拟机的网关 IP。 它将会是虚拟机可以和主机通讯的 IP

netstat -rn | grep "^0.0.0.0 " | cut -d " " -f10

我在 Homestead 机器上看到的输出是10.0.2.2; 请记住下来,下一步有用。

4. 查看本地 xdebug.ini —— Xdebug 配置文件:

php --ini | grep 'xdebug'

我的输出显示 ini 文件在 /etc/php/7.1/cli/conf.d/20-xdebug.ini

5. 配置 Xdebug,使用前面查到的网关作为xdebug.remote_host的值:

编辑刚刚定位到的xdebug.ini文件:

sudo vim /etc/php/7.1/cli/conf.d/20-xdebug.ini

确保设置是这样设置的,适合你的网关 IP:

zend_extension=xdebug.so
xdebug.remote_enable=1
xdebug.remote_autostart=1
xdebug.remote_host=10.0.2.2

7. 重启 PHP-FPM 服务

sudo service php7.1-fpm restart

VSCode 配置

1. 安装 PHP Debug 插件

2. 打开 debug 面板

3. 单击 “config” 按钮 (齿轮) 然后选择 PHP

4. 修改默认的 launch.json 文件:

请编辑此文件确保填写正确的 localSourceRootserverSourceRoot:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "port": 9000
        },
        {
            "name": "Launch currently open script",
            "type": "php",
            "request": "launch",
            "program": "${file}",
            "cwd": "${fileDirname}",
            "port": 9000
        },
        {
            "name": "Listen for XDebug on Homestead",
            "type": "php",
            "request": "launch",
            "pathMappings": {
                "/home/vagrant/Code/tighten-app-homestead": "/Users/jose/Code/tighten-app-homestead"
            },
            "port": 9000
        }
    ]
}

这里,我们添加了一个和 Listen for Xdebug 一样的配置, 此外,我们还按照插件文档中关于远程主机调试的说明包含了 pathMappings 的值。

5. 打开一个 PHPUnit 测试文件然后使用调试器插件设置一个断点。

6. 设置调试器为 「Listen for XDebug on Homestead」。

VSCode Xdebug Step Toolbar

7. 点击绿色箭头按钮「开始调试」

这实际上不会启动调试过程; 相反,它会启动一个侦听器,一旦运行 PHPUnit 测试,该侦听器就会被触发。

现在你应该看到一个步骤工具栏,蓝色箭头按钮变成灰色:VSCode Xdebug Step Toolbar


调试!

现在你可以在 Homestead 虚拟机中运行你的测试了:

phpunit --filter some_test_name

Visual Studio Code 应该显示第一个断点,并且步骤工具栏将允许你单步执行代码。

VSCode Step Debugger


关于性能要注意的

开启 Xdebug 确实会影响性能。 如果你不在需要调试, 可以通过 ssh 进入 Homestead 虚拟机并使用 xoff 命令来轻松禁用 Xdebug 插件。


愉快地调试!!

希望本教程帮助你开启一个合适的调试环境。

本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://tighten.co/blog/debugging-config...

译文地址:https://learnku.com/laravel/t/41454

本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!