Laravel 调试: 如何在 VS Code 编辑器中配置 XDebug + PHPUnit

我已经忘记尝试配置和使用 Xdebug 花费了多少时间。 这个过程通常从我在重新运行 PHPUnit 测试的同时注意到我一直在使用 dd() 的频率开始。我对自己说,「必然有更好的办法。」 接下来我知道的是, 我正在研究 Xdebug 博客文章,阅读文档,并对仍然无法正常工作感到沮丧。 几个小时后, 我最终关闭了打开的浏览器选项卡然后回到代码库继续使用 dd() 。除了现在,带着受伤的自我。

不要误解我的意思,dd() 是一个很好的工具并且我会继续使用它。 然而,在某些情况下,真正的调试设置可以将我的效率提高十倍。 使用 Xdebug ,我可以单步执行代码,同时观察值的变化,而不必添加单个 dd() ,也不需要多次运行测试。节省的成本和时间很快就会累积起来!还有一些情况下,在逐步执行客户端代码的过程中,我发现自己处于 Laravel 的核心代码中。我通常对 Laravel 的内部运作有所了解,这是一个额外的好处。

为什么更多的开发人员不在他们的开发工作流程中使用 Xdebug 呢?#

根据我的经验,许多开发者并不完全了解 Xdebug 架构及其用例。 Xdebug 强大得令人难以置信,而且有许多未充分利用的特性。(你可以在这里阅读所有的 Xdebug 功能),不过,我关注的是一个叫做 Remote Debugging 的功能 (一个误导性的名字,因为我们无需远程系统就可以调试)。

你可以通过两种方式触发 Remote Debugging :

  1. 通过浏览器
  2. 通过命令行

我遇到的几乎所有使用 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. 打开调试面板。#

VSCode Debug Console

3. 单击「 config 」按钮(齿轮),选择 PHP。#

无需修改默认的 launch.json 文件。

4. 打开一个 PHPUnit 测试文件,并插入断点。#

5. 将调试器设置为 Listen for Xdebug#

VSCode Set Configuration

6. 单机绿色箭头按钮开始调试。#

这实际上并不会启动调试过程,但是会启动一个侦听器,该侦听器将在运行 PHPUnit 测试时被触发。

现在,你应该会看到一个带有蓝色箭头按钮的工具栏,该工具栏为灰色:VSCode Xdebug Step Toolbar

终端#

创建一个环境变量 XDEBUG_CONFIG ,并设置该值为 idekey=VSCODE#

该变量标志将通知 Xdebug 侦听器该脚本正在运行。你可以通过以下两种方式之一进行操作:

导出命令

使用 export 命令,将为当前终端会话临时创建一个环境变量。会话完成后,环境变量也将无效。

export XDEBUG_CONFIG="idekey=VSCODE"

修改 .bashr./zshrc 文件 (首选)

这是设置终端环境变量的永久解决方案:

  • 打开 ~/.bashrc~/.zshrc
  • 在文件里插入如下代码: export XDEBUG_CONFIG="idekey=VSCODE"
  • 保存并关闭文件。
  • 运行 source ~/.bashrcsource ~/.zshrc 进行更改。

调试#

你现在可以运行测试了:

phpunit --filter some_test_name

VS Code 应显示第一个断点,工具栏将允许里进行单步调试代码

VSCode Step Debugger

这只是皮毛#

Xdebug 是一个功能强大的工具,刚开始使用可能会令人畏惧 —— 希望本文能够降低调试的入门门槛。这样,你可以利用 Xdebug 的强大功能,成为更有效率的开发人员。进而深入研究 Xdebug 。

快速说明: 如果你使用 VSCode-PHPUnit 插件来运行测试,可能调试器设置的断点数超出了你的预期。若要解决此问题,你可以在调试面板( debug panel )中取消选中 Everything 选项:

VSCode Set Configuration

调试愉快!!

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

原文地址:https://tighten.co/blog/configure-vscode...

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

本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 2

Mark,备用

5年前 评论

曾经在 VS Code 中弄过一次 Xdebug , Windows 系统,表示最难的部分是安装和配置 Xdebug PHP 拓展。

5年前 评论