返回博客

如何使用 DDEV 上的 Xdebug 和 PhpStorm 逐步调试 PHP 代码

2022-10-084 分钟阅读

什么是调试?

根据维基百科: “在计算机编程和软件开发中,调试是查找和解决程序、软件或系统中的错误(阻止正常运行的缺陷或问题)的过程。”

根据互联网: “调试就像在一部犯罪电影中扮演侦探,而你同时也是凶手。” – Filipe Fortes

什么是 DDEV?

DDEV 是一个开源工具,允许使用 docker 快速设置本地站点。而且,你不需要了解太多关于 docker 的知识就可以使用它,只需要安装它即可。有关获取 DDEV 以及运行 WordPress 或 Drupal 项目的命令列表,请参阅 ttps://davidloor.com/2021/12/22/how-to-setup-a-wordpress-and-drupal-local-site-with-ddev/

什么是 Xdebug?

Xdebug,根据官方网站的说法,“是 PHP 的一个扩展,提供了一系列功能来改善 PHP 开发体验”

Xdebug 提供的一个功能是逐步调试,其中 Xdebug 使用 DBGp 协议与 IDE 进行交互。PhpStorm、Sublime、Netbeans、Visual Studio Code 等知名 IDE 都支持它。通过逐步调试,程序员可以在 PHP 脚本的任何一行设置断点,在需要停止执行的地方查看该特定点的程序状态和行为。

当我们有 error_log、print_r、var_dump 等我们都用了很多的函数时,为什么还要费力使用像 xDebug 这样的工具呢?因为 xDebug 会让你成为一个更快的编码者和 bug 修复者。

假设你需要调试一个 PHP 文件,根据服务器错误日志,你几乎可以肯定其中存在一个 bug,只需使用 error_log、print_r 等函数。你需要开始调用这些函数,传递你想要输出的变量,并在浏览器中刷新页面以检查输出,如果变量没有提供你修复问题所需的信息,你将需要用一组不同的变量重复此过程,直到获得可能有助于修复 bug 的信息。而且,正如我们所知,这个过程非常耗时。

要使用 xdebug 调试上述假设的同一个 bug,在 PHP 脚本中,你需要将断点设置在你想要查看程序状态的行上,然后刷新浏览器。你将能够看到请求期间作用域内的所有变量,正如你在以下屏幕截图中看到的那样,只需一次交互。

使用 Xdebug 和 PhpStorm 进行 PHP 调试

安装和启用 xDebug

  1. 使用 DDEV 时,Xdebug 已安装。
  2. 要在 DDEV 项目中启用 Xdebug,只需在终端中运行 ddev xdebug on
    1. 你应该会看到 Enabled xdebug 作为输出

在 PhpStorm 中开始监听 PHP 调试连接

  1. 在 PhpStorm 中打开你的 PHP 项目
  2. 在 PhpStorm 的右上角,你会找到一个小的电话按钮,点击它开始监听 PHP 调试连接。
开始监听 PHP 调试连接
  1. 在浏览器中打开你的本地站点,然后在 PhpStorm 中,系统会提示你接受来自 Xdebug 的传入连接,你应该点击“接受”。
来自 Xdebug 的传入连接

最后的想法

Xdebug 只是另一个可用于查找和解决 PHP 代码中错误的工具。在许多情况下,它可以帮助提高 PHP 开发人员的生产力。

PhpStorm 也是另一个工具,它具有出色的 PHP 开发功能。我是在听说了它给我的同事带来的所有好处后,在两年前开始使用它的。十多年来,我一直是 Apache Netbeans 的忠实用户,它与 Xdebug 配合也很好,但要使其完全正常工作需要一些额外的步骤,而且它过去占用了我计算机的太多资源,导致我的计算机变得非常慢。

我们应该记住,“你和你使用的工具一样好。”