php 断点调试工具配置之一

 

开始之前

关于本教程

本教程将演示如何为 Eclipse 配置 PHP Development Tools(PDT)插件以调试 PHP 脚本,并介绍在详细查看脚本时应使用哪些透视图(即 PHP 调试)。

目标

完成本教程后,您将能够使用 PDT 项目开发 PHP 应用程序,从而在 Eclipse 中设置 XDebug — 一种开源项目,可以调试可执行的或运行在 Web 服务器上的脚本 — 或 Zend Debugger。您将了解 PDT 项目的 PHP Debug 透视图的各个部分,并了解如何设置、查看和使用断点。您还将了解在单步调试代码时如何检查变量的值,以及如何在本地服务器上调试 PHP Web 应用程序,从而使用调试器遍历 PHP Web 应用程序。

 

先决条件

要从本教程获得最大收益,您应该熟悉一些 PHP 开发。最好是曾经进行过软件开发。如果熟悉其他语言的调试,则可以更好地理解调试概念。本教程适合于接触 Eclipse 不多的新手,而不是长期使用 Eclipse 的人员。

系统需求

要完成本教程,您需要以下设置:

运行 Microsoft® Windows®、Mac OS X 或 Linux® 的计算机
本教程的示例 php.ini 文件用于 Mac OS X 和 Linux 系统。由于两种调试器都需要进行配置,以告诉 PHP 调试器扩展的位置,因此惟一明显的区别 — 如果查看 Windows 示例 — 是调试器扩展的路径。对于 Mac OS X 和 Linux,库名以 .so结尾。对于 Windows,库名以 .dll结尾;同样,使用正斜杠( /)而不是反斜杠( \)作为目录分隔符。
PHP V5.x
Linux 用户可以使用其发行版中附带的软件包安装 PHP。OS X 和 Windows 用户可以在 PHP.net 中查找 PHP V5.x

注意:本教程的示例使用的是 PHP V5.2.5。

Eclipse V3.3
Linux 用户可以很容易获得 Eclipse,因为它通常包含在发行版附带的软件包中。也可以在 Eclipse 下载中找到 Eclipse 集成开发环境(IDE)。
用于 Web 应用程序的 Apache 或 Microsoft Internet Information Services(IIS)
需要安装一个 Web 服务器来运行教程示例,演示如何在服务器中调试 PHP Web 页面。然而,如果只希望调试非 Web 页面的 PHP 脚本,则不需要使用 Web 服务器。对于本教程,我们使用 Apache V2 作为 Web 服务器。此外,也可以使用 Windows 和 IIS。本教程需要您具有适当的访问权限,可以写 Web 服务器文档的根目录。
Eclipse PHP Development Tools 框架
如果还没有安装 PHP Development Tools (PDT),请阅读 “PDT 项目概述” 小节,以决定是否需要下载并安装绑定在 Zend Debugger 中的 PDT。Eclipse Foundation PDT/Installation wiki提供了简要的说明。
Zend Studio Web Debugger
下载 Zend Studio Web Debugger的 30 天试用版。

 

安装和配置调试器

本节将介绍调试器的配置并将它连接到 PDT 中,准备调试示例项目中的 PHP 文件。

两种调试器都需要进行配置,包括将扩展复制到一个目录、使用一些配置值配置扩展并重启 Web 服务器。完成这些工作后,就可以使用两种调试器中的一种调试 PHP 应用程序了。

注意:如果只希望调试 PHP 脚本(而不是服务器上的 Web 页面),并且还没有安装 PDT,最快速方法是使用 Eclipse 更新站点 Zend.com 来安装与 Zend Debugger 绑定在一起的 PDT 版本。安装完成后就可以在 IDE 中开始调试 PHP 脚本。

安装 Zend Debugger

确保编辑正确的文件

在编辑 php.ini 之前,使用脚本中的 phpinfo()函数获得有关 PHP 应用程序的更多信息。这些信息包括配置文件的完整路径以及扩展目录的位置。关于更多信息,请参见 “ 故障排除” 小节。

安装绑定的 Zend Debugger 很容易,因为可以从 Zend 的更新站点获得,就像从 Eclipse 更新站点获得 PDT 一样。如果从 Zend 的站点下载 PDT 绑定版,则可以立即开始调试脚本。

如果希望使用 Zend Debugger 在服务器上调试 PHP Web 页面,需要安装 PHP 扩展并在 php.ini 配置文件中进行配置。要安装和配置这些扩展,需要执行以下操作:

  1. 从 Zend 的 Web 站点下载 Zend Web 服务器扩展的二进制文件。
  2. 提取包含二进制文件的 ZIP 文件。
  3. 将扩展二进制文件(称为ZendDebugger.dllZendDebugger.so)复制到一个文件夹。不一定非要将它们放到 PHP 扩展文件夹中,但这是一个不错的位置,因为这使所有的扩展二进制文件都集中到同一个位置。如果不知道具体是哪个文件夹,请查看 “故障排除” 一节。
  4. 使用清单 5 中的设置更新您的 php.ini 文件。可能需要验证正在编辑的文件是否是正确的 php.ini 文件。同样,必须确保zend_extension指令是正确的。请参看 “故障排除” 获得更多信息。


清单 5. 修改后的 php.ini

                    
[Zend]
zend_extension="/full/path/to/ZendDebugger.so"
zend_debugger.allow_hosts="127.0.0.1, 10.0.1.3"
zend_debugger.expose_remotely=always
  1. 重新启动 Web 服务器。
  2. 检验 Zend Debugger 是否被正确安装,方法是在脚本中使用phpinfo()函数或php -m命令并查看[Zend Modules]


清单 6.php -m命令的输出

                    
[Zend Modules]
Zend Debugger

在检验安装时,如果没有看到列出的模块,则不能通过 PDT 运行调试器(这将在下一节描述)。在服务器调试文件之前,必须正确地安装模块。

如果检验到模块已成功安装,则继续 “设置 PDT” 小节。

 

安装 XDebug

要使用 XDebug 作为 PDT 的调试器,需要下载并安装 XDebug,就像没有使用 Eclipse 时的做法一样。有关 XDebug 的下载和安装说明请查看xdebug & eclipse pdt。在编写本教程时,这些说明仍然适用,但是本教程仅从较高的层次介绍了这些内容:

  1. 下载正确的二进制文件(Windows)或源文件(Linux 或 Mac OS X)。
  2. 如果使用的是 Mac OS X 或 Linux,则编译 XDebug 库。因此必须先在目录中运行phpize命令,然后运行make命令,如下所示。


清单 7. XDebug 编译命令

                    
# cd [directory_with_source]
# phpize
# make
  1. 使用合适的zend_extension指令编辑 php.ini 文件以包括 XDebug 的模块(参见 “故障排除” 获得详细信息)。
  2. 重新启动 Web 服务器。
  3. 检验 XDebug 是否正确安装,方法是在 Web 服务器中使用php -m命令或脚本中的phpinfo()函数。图 9 展示了phpinfo()的输出示例。清单 8 展示了php -m输出。


图 9.phpinfo()输出
phpinfo() 输出


清单 8. 示例php -m输出

                    
[Zend Modules]
Xdebug

zend_extension 还是 zend_extension_ts?

如果还不清楚使用哪个 zend_extension指令,那么问题有点复杂。我曾经使用了一个错误的指令,这给我带来了很大的麻烦。参见 “ 故障排除” 小节,了解有关如何使用指令的提示。

在使用 PDT 和 XDebug 进行调试之前,必须正确安装模块。如果没有查看到模块信息,那么查阅 “故障排除” 小节获取提示。

在进行调试时,XDebug 的准备工作要比 Zend Debugger 多一些,因为您必须自己编译这些模块。但是现在您已经可以在 Web 服务器上调试本地脚本和文件。

 

配置调试器

当安装了这两种调试器的任意一种后,可以配置 PDT 使用调试器的方式,在 Eclipse PHP\Debug 之下使用首先项,如下所示。


图 10. PHP Debug 首选项
PHP Debug 首选项

注意,在默认情况下,两种调试器被设置为侦听不同的端口:Zend Debugger 为 10000,XDebug 为 9000。根据您的环境设置,可能需要修改端口设置。如果修改了端口设置,确保没有将调试器配置为绑定在相同的端口(如果同时安装了两种调试器的话)。

猜你喜欢

转载自qinglianluan.iteye.com/blog/2004443