Laravel 调试: 如何在 VS Code 编辑器中配置 XDebug + PHPUnit
我已经忘记尝试配置和使用 Xdebug 花费了多少时间。 这个过程通常从我在重新运行 PHPUnit 测试的同时注意到我一直在使用 dd()
的频率开始。我对自己说,「必然有更好的办法。」 接下来我知道的是, 我正在研究 Xdebug 博客文章,阅读文档,并对仍然无法正常工作感到沮丧。 几个小时后, 我最终关闭了打开的浏览器选项卡然后回到代码库继续使用 dd()
。除了现在,带着受伤的自我。
不要误解我的意思,dd()
是一个很好的工具并且我会继续使用它。 然而,在某些情况下,真正的调试设置可以将我的效率提高十倍。 使用 Xdebug ,我可以单步执行代码,同时观察值的变化,而不必添加单个 dd()
,也不需要多次运行测试。节省的成本和时间很快就会累积起来!还有一些情况下,在逐步执行客户端代码的过程中,我发现自己处于 Laravel 的核心代码中。我通常对 Laravel 的内部运作有所了解,这是一个额外的好处。
为什么更多的开发人员不在他们的开发工作流程中使用 Xdebug 呢?#
根据我的经验,许多开发者并不完全了解 Xdebug 架构及其用例。 Xdebug 强大得令人难以置信,而且有许多未充分利用的特性。(你可以在这里阅读所有的 Xdebug 功能),不过,我关注的是一个叫做 Remote Debugging 的功能 (一个误导性的名字,因为我们无需远程系统就可以调试)。
你可以通过两种方式触发 Remote Debugging :
- 通过浏览器
- 通过命令行
我遇到的几乎所有使用 Xdebug 的资源都通过浏览器完成第一个用例。 但是,我希望通过运行 PHPUnit 测试在终端中使用它。经过数小时的摸索, 我发现可以与现如今最受欢迎的编辑器之一 Visual Studio Code 一起使用 Xdebug 远程调试的配置。
假如你正在使用 Laravel Homestead 进行本地开发,你可能想要阅读 本文。
获取配置:让我们开始干!#
为了让这起作用我们需要配置 Xdebug PHP 扩展,Visual Studio Code, 和你的终端。 这些步骤假设你在同一台机器上编辑和运行测试
Xdebug#
1. 安装 Xdebug PHP 扩展.#
对于 Mac 用户,你可以很简单的使用 Homebrew 安装对应你 PHP 版本的 Xdebug 扩展。如果你使用的是 PHP7.1, 你可以执行:
brew install php71-xdebug
对于其他平台,你可以阅读如何 安装 Xdebug.
2. 通过运行以下命令找到您的 ext-xdebug.ini 文件的路径:#
php --ini
输出应如下所示:
Configuration File (php.ini) Path: /usr/local/etc/php/7.1
Loaded Configuration File: /usr/local/etc/php/7.1/php.ini
Scan for additional .ini files in: /usr/local/etc/php/7.1/conf.d
Additional .ini files parsed: /usr/local/etc/php/7.1/conf.d/ext-igbinary.ini,
/usr/local/etc/php/7.1/conf.d/ext-mcrypt.ini,
/usr/local/etc/php/7.1/conf.d/ext-mongodb.ini,
/usr/local/etc/php/7.1/conf.d/ext-xdebug.ini,
/usr/local/etc/php/7.1/conf.d/php-memory-limits.ini
3. 打开 ext-xdebug.ini 以确保扩展已加载并启用.#
文件内容应该如下所示:
[xdebug]
zend_extension="/usr/local/opt/php71-xdebug/xdebug.so"
xdebug.remote_enable=1
对于 CLI 远程调试,这些是我们在 ext-xdebug.ini 文件中需要的所有配置设置
VS Code#
1. 安装 PHP Debug plugin 插件。#
2. 打开调试面板。#
3. 单击「 config 」按钮(齿轮),选择 PHP。#
无需修改默认的 launch.json
文件。
4. 打开一个 PHPUnit 测试文件,并插入断点。#
5. 将调试器设置为 Listen for Xdebug。#
6. 单机绿色箭头按钮开始调试。#
这实际上并不会启动调试过程,但是会启动一个侦听器,该侦听器将在运行 PHPUnit 测试时被触发。
现在,你应该会看到一个带有蓝色箭头按钮的工具栏,该工具栏为灰色:
终端#
创建一个环境变量 XDEBUG_CONFIG
,并设置该值为 idekey=VSCODE
。#
该变量标志将通知 Xdebug 侦听器该脚本正在运行。你可以通过以下两种方式之一进行操作:
导出命令
使用 export
命令,将为当前终端会话临时创建一个环境变量。会话完成后,环境变量也将无效。
export XDEBUG_CONFIG="idekey=VSCODE"
修改 .bashr
或 ./zshrc
文件 (首选)
这是设置终端环境变量的永久解决方案:
- 打开
~/.bashrc
或~/.zshrc
。 - 在文件里插入如下代码:
export XDEBUG_CONFIG="idekey=VSCODE"
。 - 保存并关闭文件。
- 运行
source ~/.bashrc
或source ~/.zshrc
进行更改。
调试#
你现在可以运行测试了:
phpunit --filter some_test_name
VS Code 应显示第一个断点,工具栏将允许里进行单步调试代码
这只是皮毛#
Xdebug 是一个功能强大的工具,刚开始使用可能会令人畏惧 —— 希望本文能够降低调试的入门门槛。这样,你可以利用 Xdebug 的强大功能,成为更有效率的开发人员。进而深入研究 Xdebug 。
快速说明: 如果你使用 VSCode-PHPUnit 插件来运行测试,可能调试器设置的断点数超出了你的预期。若要解决此问题,你可以在调试面板( debug panel )中取消选中
Everything
选项:
调试愉快!!
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
推荐文章: