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

本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 2

Mark,备用

4年前 评论

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

4年前 评论

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