开发者测试调试工具Xdebug安装及集成使用教程

开发者测试调试工具Xdebug安装及集成使用教程

正如任何一个开发者可以证明的那样,代码在初稿之后永远不可能为生产做好准备。开发过程中的一个关键部分是调试–删除或改变代码中所有不工作的部分。

PHP的Xdebug扩展是一种流行的方法,可以根除并摧毁你代码中的所有bug。

Xdebug的一个伟大方面是它的灵活性。无论你喜欢哪种框架或开发环境,你都能找到适合你工作流程的Xdebug版本。从这里开始,掌握这个工具不会花很长时间。

本教程将深入研究Xdebug,包括安装过程、将其集成到你的设置中,以及一般使用方法。

首先,让我们给你更多关于Xdebug是什么和它做什么的背景。

  1. Xdebug介绍
  2. 为什么要使用Xdebug?
  3. 如何开启PHP错误日志
  4. 如何使用Xdebug
  5. 结合PhpStorm使用Xdebug
  6. 命令小贴士

Xdebug介绍

Xdebug是最流行的调试PHP代码的扩展之一。你将在你选择的环境中安装它,它充当一个 “步骤调试器”。

开发者测试调试工具Xdebug安装及集成使用教程

Xdebug logo

简而言之,这使你能够逐行处理你的代码,这样你就可以逐步查看代码在你的程序中是如何行动和互动的,以及调查其输出。从那里,你可以根据你的需要进行修改。

不过,Xdebug可以做得更多。

  • 你可以使用一套指标和可视化的方法来分析你的代码的性能。
  • 当你运行PHP单元测试时,你可以看到你运行和执行的代码套件。
  • Xdebug包括 “跟踪 “功能,它将把每个函数的调用写到磁盘上。这将包括参数、变量赋值和返回值。
  • Xdebug还对标准的PHP错误报告做了改进。我们将在后面介绍更多这方面的内容。

鉴于这些特性,有很多方法可以在你的工作流程中使用Xdebug(以及任何类似的调试器)。我们将在下一节中介绍这些。

为什么要使用Xdebug?

许多开发者不会有一个专门的调试工作流程,使用第三方工具和扩展。这是因为 PHP 包含了它自己的基本错误记录。你会使用as error_logvar_dumpprint等命令来查看变量和函数调用的结果。

例如,有很多片段你可以重新用于WordPress的开发–Stack Overflow上有很多这样的片段

function log_me($message) {
if ( WP_DEBUG === true ) {
if ( is_array($message) || is_object($message) ) {
error_log( print_r($message, true) );
} else {
error_log( $message );
}
}
}
function log_me($message) {
if ( WP_DEBUG === true ) {
if ( is_array($message) || is_object($message) ) {
error_log( print_r($message, true) );
} else {
error_log( $message );
}
}
}
function log_me($message) {
if ( WP_DEBUG === true ) {
if ( is_array($message) || is_object($message) ) {
error_log( print_r($message, true) );
} else {
error_log( $message );
}
}
}

然而,这种方法也有一些重要的缺点。

  • 你首先必须确保你为你所使用的平台启用错误日志。在这种情况下,你要启用 WP_DEBUG (稍后会有更多介绍)。
  • 这个 “转储 “调试的例子比步骤调试提供的调查范围要小。在这里,你只能输出你定义的东西。

后一点需要很多手工操作,尤其是当你的日常工作不是系统管理员的时候。例如,如果你想调试一个代码块,你可能会根据你定义的一个变量来添加你的代码段。然而,它可能不是问题的根源,甚至不能说明正在发生什么。

相反,像Xdebug这样的工具可以发挥其魔力,提供更大的范围。

  • 你可以在执行过程中的不同点 “破坏 “你的代码,以查看实时发生的情况。
  • 有无数的指标、可视化、分支等等来帮助你确定你的代码在做什么以及它是如何反应的。
  • 有时,你甚至可以在调试过程中即时改变数值。这提供了巨大的价值,甚至对于工作良好的代码套件也是如此。你基本上可以在任何时候进行手动单元测试。
  • 因为你使用断点来标记要调试的区域,所以你不需要在你的代码中使用片段工作。这可以使你的代码更干净,并减少未来问题的数量。

总的来说,使用像Xdebug这样的工具是一个主动的决定,而不是一个被动的决定。你可以把步骤调试作为核心开发过程的一部分,就像实施单元测试作为测试驱动开发(TDD)的一部分。

如何开启PHP错误日志

虽然你可以在没有具体错误的情况下调试你的代码,但在没有打开Xdebug的情况下知道问题是否发生往往是很好的。这给你一个探索的起点。这不是严格意义上的必要条件,但可以成为你的链条中的一个有用部分。

要报告每一个出现的错误,你需要在相关的PHP文件的顶部添加一行。

error_reporting(E_ALL);
error_reporting(E_ALL);
error_reporting(E_ALL);

这是一个包罗万象的命令,你可以用ini_set函数实现同样的目的。

ini_set(‘error_reporting’, E_ALL);
ini_set(‘error_reporting’, E_ALL);
ini_set('error_reporting', E_ALL);

这让你可以逐个项目地改变php.ini文件中的设置。虽然你可以进入这个文件并进行手动更改,但通常使用 ini_set 来更改特定的参数是一个更好的主意:

ini_set(‘display_errors’, ‘1’);
ini_set(‘display_errors’, ‘1’);
ini_set('display_errors', '1');

一旦你把主动错误报告设置成你喜欢的样子,你就可以开始用Xdebug工作。

如何使用Xdebug

在接下来的几个部分,我们将向你展示如何使用Xdebug,包括你需要设置的步骤。虽然我们不能涵盖每个工具的各个方面,但这个快速入门指南会让你快速入门。

不过,首先,你需要安装Xdebug。让我们来看看如何做到这一点。

1. 为你的操作系统(OS)安装Xdebug

因为Xdebug可以适应任何数量的设置,所以每个设置的具体过程都会略有不同。在操作系统层面上,有一些区别。

  • Windows:这是一个有点复杂的设置过程,包括使用现有的 PHP 文件和安装向导,然后下载适合你的系统的版本。
  • Linux:这里的方法可以说是最直接的了。你可以使用包管理器来安装Xdebug,或者PHP扩展社区库(PECL)
  • Mac:这个方法也很简单。一旦你安装了PECL,你可以在终端实例中运行 pecl install xdebug 。你还需要在你的系统上安装XCode命令行工具和PHP。

然而,大多数用户不会想坚持使用系统级的Xdebug实例。相反,你会想把它整合到你自己的开发环境中。

2. 将Xdebug集成到你的开发环境中

一旦你为你的操作系统安装了Xdebug,你应该把它连接到你的环境中。

这里有很多支持的系统和工具,我们无法一一介绍。稍后,我们将为你提供PhpStorm的说明。即便如此,还有很多其他流行的环境可以选择。下面是我们的一些顶级推荐。

Variing Vagrant Vagrants(VVV)

VVV是Make WordPress网站上的命名环境之一。

开发者测试调试工具Xdebug安装及集成使用教程

Varying Vagrant Vagrants标志

好消息是,VVV已经包括了Xdebug的一个版本,但你需要激活它。你可以在一个终端窗口中使用安全壳(SSH)来完成这个任务。

vagrant ssh -c “switch_php_debugmod xdebug”
vagrant ssh -c “switch_php_debugmod xdebug”
vagrant ssh -c "switch_php_debugmod xdebug"

不过,这对性能有一点影响,如果你提供你的网站,你将需要把这个选项重新打开。

Laravel Valet

对于一些用户来说, Laravel的Valet代表了一个近乎完美的网络开发环境. 更棒的是, 你可以将Xdebug与之整合.

要做到这一点, 你需要为调试器创建一个配置文件. 你可以在命令行中使用 php --ini 找到你自己的路径, 这将返回一些不同的文件路径:

开发者测试调试工具Xdebug安装及集成使用教程

终端机显示配置文件的路径列表

接下来,在其他.ini文件的路径上创建一个新的xdebug.ini文件。在我们的例子中,它位于/opt/homebrew/etc/php/7.4/conf.d

一旦你打开这个新文件,也要打开加载的配置文件(你的主php.ini文件)的路径。两者都打开后,在底部添加以下内容。

  • php.ini: zend_extension="xdebug.so"
  • xdebug.ini: xdebug.mode=debug

一旦你保存了你的改动,从终端运行 valet restart ,然后在你的网站的一个文件中加入 phpinfo(); exit; 。你想通过在浏览器中快速加载页面来检查这是否有效。

开发者测试调试工具Xdebug安装及集成使用教程

PHP信息界面

注意你可能需要用 sudo brew services restart php 来重启PHP,同时用 php --info | grep xdebug来检查你的系统安装Xdebug是否正确。你会注意到输出中的Xdebug专用行:

开发者测试调试工具Xdebug安装及集成使用教程

从这里,你可以寻求将Xdebug纳入你选择的编码编辑器中。

XAMPP

与Valet一样,XAMPP的过程也有几个部分。然而,Windows和macOS版本有两个不同的过程。

首先安装XAMPP,然后快速检查你的系统中是否存在php_xdebug.dll文件(Windows)或xdebug.so文件(macOS)。

开发者测试调试工具Xdebug安装及集成使用教程

显示XAMPP文件测试的终端窗口

如果该文件存在,就可以继续配置了。否则,首先需要下载适合Windows的二进制文件–为你喜欢的PHP版本下载一个64位的文件–或者如果你用的是Mac,则需要安装更多的依赖项。

对于 Windows,重命名 DLL 文件 php_xdebug.dll,然后把它移到 xamppphpext 文件路径中。接下来,在你喜欢的代码编辑器中打开xamppphpphp.ini文件并添加以下内容:

output_buffering = Off
output_buffering = Off
output_buffering = Off

在 [XDebug] 部分,添加以下三行。

zend_extension=xdebug
xdebug.mode=debug
xdebug.start_with_request=trigger
zend_extension=xdebug
xdebug.mode=debug
xdebug.start_with_request=trigger
zend_extension=xdebug
xdebug.mode=debug
xdebug.start_with_request=trigger

一旦你保存了你的更改,重新启动Apache并测试Xdebug。

对于Mac,你要确保你在终端实例中使用 xcode-select --install 来安装Xcode命令行工具。之后,有三个软件包你要用Homebrew来安装。

brew install autoconf automake libtool
brew install autoconf automake libtool
brew install autoconf automake libtool

在某些情况下,你还需要重新安装XAMPP以获得核心程序和 “开发者文件”。你应该可以只重新安装这些文件,但你要先对你现有的设置进行备份。

接下来,在你的系统上导航到Xdebug源文件夹的下载,解压TGZ文件。在一个终端窗口中,导航到该目录并运行以下程序:

phpize
pecl install xdebug
phpize
pecl install xdebug
phpize
pecl install xdebug

注意,你可能也需要在这里使用 sudo 。从这里,你可以编辑XAMPP的php.ini文件。对于大多数macOS安装,你可以在/Applications/XAMPP/xamppfiles/etc/php.ini中找到它。在这个目录中,你也会找到你的xdebug.so文件的路径–记下它并使用它来代替本片段中的文件路径占位符。

[xdebug]
zend_extension=/path/to/xdebug.so
xdebug.mode=develop,degug
xdebug.start_with_request=yes
[xdebug]
zend_extension=/path/to/xdebug.so
xdebug.mode=develop,degug
xdebug.start_with_request=yes
[xdebug]
zend_extension=/path/to/xdebug.so
xdebug.mode=develop,degug
xdebug.start_with_request=yes

为了测试这是否有效,在htdocs XAMPP主目录下创建一个新的xdebug_info.php文件。在里面,添加以下内容:

<?php
xdebug_info();
<?php
xdebug_info();
<?php
xdebug_info();

…然后刷新Apache并在浏览器中测试Xdebug。

结合PhpStorm使用Xdebug

一旦你通过操作系统和你的开发环境安装了Xdebug,你还需要查看调试器本身。你将通过你选择的代码编辑器或集成开发环境(IDE)来做这件事。就像你的环境一样,有很多可供选择的,每一个都可能有不同的方法。

这就是说,许多开发人员选择使用JetBrains的PhpStorm。事实上,PhpStorm提供了 “感知WordPress的协助“–而且它也是一个受欢迎的选择,因为有许多其他原因。

开发者测试调试工具Xdebug安装及集成使用教程

PhpStorm界面

JetBrains 网站包括连接 Xdebug 和 PhpStorm 的完整说明,但我们将在此回顾一下。

首先,在Preferences窗格中导航到Languages & Frameworks > PHP页面。在这里,打开CLI Interpreter下拉字段旁边的More Items串菜单:

开发者测试调试工具Xdebug安装及集成使用教程

在PhpStorm中选择一个CLI解释器

这将显示一些关于你的 PHP 版本和解释器的进一步细节。如果你点击Configuration file选项旁边的More items省略号,你会看到php.ini文件的完整路径。

开发者测试调试工具Xdebug安装及集成使用教程

在PhpStorm中修改PHP配置

接下来你将使用这个PHP文件来继续设置过程

在php.ini文件中工作

这里的第一个任务是编辑出任何影响 Xdebug 如何与 PhpStorm 一起工作的行。

php.ini 文件中,寻找以下几行,并将其删除或注释掉。

zend_extension=<path_to_zend_debugger>
zend_extension=<path_to_zend_optimizer>
zend_extension=<path_to_zend_debugger>
zend_extension=<path_to_zend_optimizer>
zend_extension=<path_to_zend_debugger>
zend_extension=<path_to_zend_optimizer>

这些行不会在所有情况下出现,所以如果你没有看到它们,不要惊慌。

接下来,在文件中添加以下内容。

[xdebug]
zend_extension=“xdebug.so”
xdebug.mode
重要声明

本网站的文章部分内容可能来源于网络,如有侵犯你的权益请联系邮箱:wxzn8@outlook.com
站内资源为网友个人学习或测试研究使用,未经原版权作者许可,禁止用于任何商业途径!请在下载24小时内删除!本站资源大多存储在云盘,如发现链接失效请反馈,我们会及时更新。

给TA打赏
共{{data.count}}人
人已打赏
WordPress开发学习

实例说明如何通过Python来连接管理WordPress

2023-1-13 18:15:10

WordPress开发学习

如何创建一个有效的WordPress开发流程

2023-1-13 18:15:46

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索