开发人员测试和调试工具Xdebug的安装和集成教程
正如任何开发人员都可以证明的那样,在第一份草稿之后,代码永远不会准备好投入生产。开发过程的一个关键部分是调试——删除或更改所有不起作用的代码部分。
PHP的Xdebug扩展是一种根除和破坏代码中所有bug的流行方法。
Xdebug的一大优点是它的灵活性。无论你喜欢哪个框架或者开发环境,都能找到适合你工作流程的Xdebug版本。从这里开始,不用多久就能掌握这个工具。
本教程将深入研究Xdebug,包括安装过程,将其集成到您的设置中,以及一般用法。
首先,让我们给你更多关于Xdebug是什么和它做什么的背景知识。
Xdebug简介
为什么要使用Xdebug?
如何打开PHP错误日志
如何使用Xdebug
将Xdebug与PhpStorm一起使用
命令提示
Xdebug简介
Xdebug是调试PHP代码最流行的扩展之一。您将在您选择的环境中安装它,它充当“单步调试程序”。
Xdebug徽标
简而言之,这使您能够逐行处理您的代码,以便您可以逐渐看到代码在程序中是如何操作和交互的,以及调查它的输出。从那里,你可以根据你的需要修改它。
但是,Xdebug可以做得更多。
您可以使用一组指示器和可视化方法来分析代码的性能。
当您运行PHP单元测试时,您可以看到您运行和执行的代码套件。
Xdebug包含“trace”函数,会把每个函数的调用写到磁盘上。这将包括参数、变量赋值和返回值。
Xdebug还改进了标准的PHP错误报告。我们将在后面详细介绍这一点。
考虑到这些特性,有许多方法可以在您的工作流程中使用Xdebug(以及任何类似的调试器)。我们将在下一节介绍这些。
为什么要使用Xdebug?
许多开发人员没有专门的调试工作流程,使用第三方工具和扩展。这是因为PHP包含了自己的基本错误记录。您可以使用error_log、var_dump和print等命令来查看变量和函数调用的结果。
例如,你可以在WordPress的开发中重用很多片段——有很多这样的片段在堆栈上溢出。
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);
这是一个包罗万象的命令。您可以使用ini_set函数来达到同样的目的。
ini_set(‘error_reporting’, E_ALL);
这允许您逐个项目地更改php.ini文件中的设置。尽管您可以进入该文件并进行手动更改,但使用ini_set来更改特定参数通常是一个更好的主意:
ini_set(‘display_errors’, ‘1’);
一旦您将活动错误报告设置为您喜欢的,您就可以开始使用Xdebug了。
如何使用Xdebug
在接下来的几节中,我们将向您展示如何使用Xdebug,包括您需要设置的步骤。虽然我们无法涵盖每种工具的所有方面,但本快速入门指南将帮助您快速入门。
不过,首先,您需要安装Xdebug。让我们看看如何做到这一点。
1.为您的操作系统安装Xdebug
因为Xdebug可以适应任意数量的设置,所以每个设置的具体过程会略有不同。在操作系统层面,有一些区别。
Windows:这是一个有些复杂的设置过程,包括使用现有的PHP文件和安装向导,然后下载适合你系统的版本。
Linux:这里的方法可以说是最直接的。你可以使用软件包管理器来安装Xdebug或者PHP扩展社区库(PECL)。
Mac:这个方法也很简单。一旦安装了PECL,就可以在终端实例中运行pecl install xdebug。您还需要在您的系统上安装XCode命令行工具和PHP。
然而,大多数用户不想坚持使用系统级Xdebug实例。相反,您会希望将其集成到您自己的开发环境中。
2.将Xdebug集成到您的开发环境中
一旦为您的操作系统安装了Xdebug,就应该将其连接到您的环境。
这里支持的系统和工具很多,不能一一介绍。稍后,我们将为您提供PhpStorm的说明。即便如此,还有许多其他流行的环境可供选择。以下是我们的一些重点推荐。
变化不定的流浪者(VVV)
VVV是Make WordPress网站上的命名环境之一。
变化的流浪者流浪者旗帜
好消息是VVV已经包含了一个Xdebug版本,但是你需要激活它。您可以在终端窗口中使用安全外壳(SSH)来完成这项任务。
vagrant ssh -c “switch_php_debugmod xdebug”
但是,这对性能有一点影响。如果您提供了您的网站,您需要重新打开此选项。
拉勒维尔男仆
对于一些用户来说,Laravel的代客代表了一个近乎完美的网络开发环境。更好的是,您可以将Xdebug与它集成。
为此,您需要为调试器创建一个配置文件。您可以在命令行中使用php – ini来查找您自己的路径,这将返回一些不同的文件路径:
显示终端配置文件的路径列表。
接下来,在other路径下创建一个新的xdebug.ini文件。ini文件。在我们的示例中,它位于/opt/home brew/etc/PHP/7.4/conf . d。
打开这个新文件后,还要打开加载的配置文件(主php.ini文件)的路径。两个都打开后,在底部添加以下内容。
PHP . ini:Zend _ extension = ” xdebug . so “
xdebug.ini: xdebug.mode=debug
一旦保存了更改,从终端运行valet restart,然后将phpinfo()添加到网站的一个文件中;退出;。您希望通过在浏览器中快速加载页面来检查这是否可行。
PHP信息接口
注意你可能需要用sudo brew services重启PHP,同时使用php – info | grep Xdebug检查你的系统是否正确安装了Xdebug。您会注意到输出中的Xdebug专用行:
从这里开始,您可以将Xdebug集成到您选择的编码编辑器中。
XAMPP
像贴身男仆一样,XAMPP的过程也有几个部分。但是Windows和macOS版本有两个不同的流程。
首先安装XAMPP,然后快速检查你的系统中是否存在php_xdebug.dll文件(Windows)或者xdebug.so文件(macOS)。
显示XAMPP文件测试的终端窗口
如果文件存在,您可以继续配置。否则,首先你需要为Windows下载二进制文件——为你最喜欢的PHP版本下载64位文件——或者如果你使用的是Mac,你需要安装更多的依赖项。
对于Windows,重命名DLL文件php_xdebug.dll,然后将其移动到xamppphpext文件路径。接下来,在您喜欢的代码编辑器中打开xamppphpphp.ini文件,并添加以下内容:
output_buffering = Off
在[XDebug]部分,添加以下三行。
zend_extension=xdebugxdebug.mode=debugxdebug.start_with_request=trigger
保存更改后,重启Apache并测试Xdebug。
对于Mac,您应该确保在终端实例中使用xcode-select – install来安装xcode命令行工具。之后,有三个软件包,你想用家酿安装。
brew install autoconf automake libtool
在某些情况下,你需要重新安装XAMPP来获得核心程序和“开发者文件”。您应该能够重新安装这些文件,但是您必须首先备份您现有的设置。
接下来,导航到系统上的Xdebug下载源文件夹,解压缩TGZ文件。在终端窗口中,导航到目录并运行以下程序:
phpizepecl install xdebug
注意,这里可能还需要使用sudo。从这里,你可以编辑XAMPP的php.ini文件。对于大多数macOS安装,您可以在/applications/xampp/xampp files/etc/PHP . ini中找到它。在此目录中,您还可以找到xdebug.so文件的路径-记下它并使用它来代替此片段中的文件路径占位符。
[xdebug]zend_extension=/path/to/xdebug.soxdebug.mode=develop,degugxdebug.start_with_request=yes
为了测试这是否有效,在htdocs XAMPP主目录中创建一个新的xdebug_info.php文件。在内部,添加以下内容: