`
isiqi
  • 浏览: 16491589 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Windows 下安装 Xdebug 受难记之(3)

阅读更多

正式开始《用 Xdebug 进行基准测试和代码覆盖率分析》。

一、使用 Xdebug 进行基准测试

可以使用以下函数获取基准测试信息。

int xdebug_memory_usage()
这个函数返回函数被调用时当前的内存使用情况。

int xdebug_peak_memory_usage()
这个函数返回函数被调用时,启动脚本之后脚本所使用内存的峰值。

float xdebug_time_index()
这个函数返回脚本执行的总时间,具体数据以秒来计。返回的数据很精确,并且允许跟踪执行得比较慢的 PHP 代码块。

使用以上 Xdebug 函数可以获取局部代码的基准测试信息,很灵活。另外,还可以进行应用程序范围的基准测试,可以提供应用程序中很多脚本、函数、类等基准测试信息,这些在前文已经述及。

二、使用 Xdebug 检查代码覆盖

如果在某个文件中只有一部分代码经常被执行,通过提取和分离这些代码,将这个文件分为两个或多个文件,就可能会获得一些性能的提升。代码覆盖也有助于找出那些从来不会被执行的僵尸代码,或者根本无法访问的代码。

所以,了解一套应用系统中所有代码的工作情况很有用,有必要对代码的执行情况心中有数。但这是手工无法完成的。于是 Xdebug 提供的代码覆盖功能就派上了用场。

Xdebug 代码覆盖功能以函数的形式提供,其中一个函数为你提供了文件中那些在执行过程中已经被运行过的代码行,另外还有停止和获取代码覆盖信息的函数:

void xdebug_start_code_coverage([int options])
调用这个函数会开始对代码覆盖信息的收集。它有两个选项:XDEBUG_CC_UNUSED和XDEBUG_CC_DEAD_CODE,可以用它们来确定某段代码是否被调用过。

void xdebug_stop_code_coverage( )
调用这个函数可以停止对代码覆盖数据的收集。

array xdebug_get_code_coverage( )
这个函数返回一个多维数组,格式为 $array[filename][line] = numberofcalls。

三、用 Xdebug 进行远程调试

3.1 Xdebug 远程调试的原理

所谓“远程调试”,就是指开发Web程序时,编码与调试端与“远程Web服务器”不在同一台机器上 - 当然这是指逻辑上的。所以首先在网络上,机器需要配置 IP 地址,并从传输层往下要能联通,进行正常通信 - 要能 Ping 得通。

现在,很多 GUI 开发平台,例如 Eclipse、Zend Studio(从7.0开始已经是 built on Eclipse了)等开发工具,已经支持 Web 程序的远程交互式调试功能。Xdebug 自带的命令行调式工具 debugclient 是最原始的远端调试工具(经常在 Linux 下使用)。

开发平台的 IDE 会设置并监听一个调试端口,再在正确安装、配置 Xdebug 的Web服务器上,配置调试端的调试端口,用于 Xdebug 连接时使用(还有一些安全设置)。

调试的时候,调试端IDE访问远程Web服务器(http://IP地址),连通后,远程Web服务器随即利用IDE调试端口与调试端建立反向连接,于是可以进行通信。

由于调试端与远程Web服务器调试的应该是同一段代码,所以IDE端与Web服务器端的 PHP 代码文件必需一致。但路径可以不同。这就存在一个代码文件的同步,和本地路径与远程路径的对应(path mapping)问题。

如果调试端与远程Web服务器是两台物理上独立的机器,则需要在调试前,通过其它渠道(FTP等)进行代码同步。

如果调试端与Web服务器是同一台机器,则最好配置IDE的工程目录与Web服务器的目录指向文件系统的同一个物理文件夹,这样就不存在代码同步的问题了。 - 事实上,强烈建议就这么建立开发和调试环境。

具体以 Zend Studio 7.1 与 Apache2.2(集成PHP5.2.5,并安装了Xdebug)的配置来说明。ZS7.1 与 Apache 安装在同一台机器上。

3.2 Web 服务器端 Xdebug 的有关配置

在前文安装 Xdebug 的基础上,给 [Xdebug] 节添加以下配置语句,其意义如后边的注释所示:

[Xdebug]
xdebug.remote_enable=true ;Xdebug允许远程IDE连接
xdebug.remote_host=127.0.0.1 ;允许连接的IDE的IP地址
xdebug.remote_port=9000 ;反向连接IDE使用的端口
xdebug.remote_handler=dbgp ;用于远程调试的应用层通信协议
xdebug.profiler_enable=On ;允许生成profiler文件
xdebug.profiler_output_dir="D:\_myPHP5_apache\htdocs\xdebug" ;profiler文件输出路径,必须是物理路径

配置修改后,必须重启 Apache 服务。

3.2 Zend Studio 端的配置

打开菜单 Window/Preferences/Debug,“PHP Debugger”选择“XDebug”,可点击后边的“Configure”,选择“XDebug”,基本使用缺省配置就可以。

然后,Server 可以选择默认的,Url 是 http://localhost,如果端口是 8080,可以写成 http://localhost:8080。保存后,这里就配置完毕了。

3.2 调试

Apache 的 localhost 虚拟机的物理路径为 D:\_myPHP5_apache\htdocs\。

在 ZS7.1 里建立新的 PHP 工程,例如命名为 test1,物理路径指定为 D:\_myPHP5_apache\htdocs\test01。test01 文件夹被自动创建。

这样,ZS7.1 的内部文件夹 /test1 就与 Apache 的 http://localhost/test01 虚拟路径建立了映射关系。

使用 ZS7.1 建立 index.php 文件,输入一些 PHP 代码,文件就会位于物理路径 D:\_myPHP5_apache\htdocs\test01 下,亦即 Apache 的虚拟路径 http://localhost/test01 下。

点击 ZS.71 的菜单 Run/Debug Configurations,在 PHP Web Page 下建立调试配置文件,Server Debugger 选择 Xdebug,PHP Server 选择默认的 localhost 服务器,起始调试 File 选择 /test1/index.php,Url 输入成 http://localhost/test01/index.php 的形式。

点击 Debug 按钮,开始进入单步调试模式,淡绿色的光条跳到 PHP 代码的第一行,选中代码面板,按 F5 即可单步执行。

这时,在 D:\_myPHP5_apache\htdocs\xdebug 文件夹下有调试信息文件 cachegrind.out.* 生成,可以用前边介绍的软件阅读分析。

当没有正确配置和(或)联通 Xdebug 时,IDE 界面单步执行按钮和 F5 快捷键是无效的。

ZS7.1 除过与 Xdebug 配合进行远程交互式调试外,还可与 Zend Debugger 进行协同工作。其配置方法与 Xdebug 很相似。

在 Zend Server 5.x 中包含了 Zend Debugger 的扩展包,Zend Server 5.x 企业版(收费的)中还包含了输出错误调试信息的功能,在 ZS7.1 界面里可以直接下载浏览这些错误信息。

作者:张庆(网眼) 西安 PHP 教育培训中心 2010-7-7
来自“网眼视界”:http://blog.why100000.com
作者微博:http://t.qq.com/zhangking
“十万个为什么”电脑学习网:http://www.why100000.com

分享到:
评论

相关推荐

    windows下安装Xdebug+WinCacheGrind

    在Windows环境下,安装Xdebug和WinCacheGrind是开发者为了进行PHP性能分析的重要步骤。Xdebug是一个强大的PHP扩展,主要用于调试和性能分析,而WinCacheGrind则是一个可视化的工具,用于解析Xdebug生成的profiling...

    Windows xp下apache + php 安装 Xdebug 扩展

    windows xp 下 apache + php 安装Xdebug 附件中 含有 Xdebug的dll扩展库文件 和 详细的 安装步骤,如果使用的是 php的其他版本 请到 www.Xdebug.org/download.php 下载相应版本

    在sublime text2上安装xdebug

    在sublime text2上安装xdebug

    xdebug helper chrome插件以及安装步骤详解

    4. **启用Xdebug Helper**: 安装完成后,你可以在浏览器右上角看到一个绿色的 "X" 图标,这表明Xdebug Helper已经启用。点击这个图标可以切换调试模式。 ### 配置 PhpStorm 与 Xdebug 1. **启动 PhpStorm**: 打开...

    安装xdebug 扩展

    3. **配置Xdebug**:将下载的Xdebug扩展解压后,将其复制到PHP的`ext`目录下。然后,打开PHP的配置文件`php.ini`,添加以下配置: ``` [Xdebug] zend_extension=path/to/xdebug.so # Linux/MacOS下,指向xdebug....

    xdebug-3.1.0 用来debug

    - 安装 Xdebug 通常需要通过 PECL 包管理器或者手动编译。对于 Xdebug 3.1.0,你需要先确保你的 PHP 版本与之兼容。 - 配置 Xdebug 需要编辑 `php.ini` 文件,添加或修改适当的配置项,如 `zend_extension` 指定...

    PHP_XDEBUG for windows

    PHP_Xdebug是一款强大的PHP调试工具,尤其在Windows环境下与WAMP(Windows Apache MySQL PHP)服务器组合使用时,它为开发者提供了更深入的错误检测和调试功能。Xdebug不仅有助于捕获运行时错误,还能提供详细的堆栈...

    xdebug helper调试插件

    2. **配置 Xdebug**:在服务器端,需安装并配置 Xdebug 扩展,设置适当的配置参数如 `xdebug.remote_enable` 和 `xdebug.idekey`,使其与 Xdebug Helper 插件匹配。 3. **启用/禁用调试**:在浏览器中,点击 Xdebug...

    php xdebug 插件及全面安装教程

    对于IDE如VSCode或PHPStorm,需要安装相应的Xdebug插件,并配置调试配置。例如,VSCode中创建`.vscode/launch.json`文件,添加如下内容: ```json { "version": "0.2.0", "configurations": [ { "name": ...

    xdebug 安装,调试 版本php7.3.4

    xdebug 安装,调试 版本php7.3.4

    php7.X+PhpStorm2019.X+宝塔linux xdebug远程调试环境的安装及设置

    在本篇文章中,我们将详细讲解如何在 PHP 7.X 环境下,使用宝塔 Linux 和 PhpStorm 2019.X,安装和设置 xdebug 远程调试环境。 一、环境说明 在本篇文章中,我们将使用两台主机,一台是服务器端,装有 Centos 操作...

    Xdebug Dll下载以及教程之Xdebug配置

    使用Xdebug调试和优化PHP程序系列教程之Xdebug配置,根据Xdebug的官方文档来详细解释Xdebug的参数配置。 Xdebug配置 第一部分:安装 预编译模块 安装预编译模块是很容易的。只需要将它们放到一个目录中,并将下面的...

    xdebug-2.0.4.tgz

    如何安装Xdebug? 以PHP5.1.4,Windows平台为例(其它PHP版本,其它平台请参看官网文档): 1. 登录www.xdebug.org,在首页右侧有一个Windows modules,选择其中的PHP5.1.2+,下载php_xdebug-5.1.2-2.0.0beta6.dll...

    php调试之Netbeans + xdebug 配置全攻略

    ### PHP调试之Netbeans + xdebug配置全攻略 在PHP开发过程中,经常需要对代码进行调试来确保程序的正确性和高效性。对于PHP开发者来说,一个强大的集成开发环境(IDE)加上一个高效的调试器是非常重要的工具组合。...

    CentOS 安装 PHP5.5+Redis+XDebug+Nginx+MySQL全纪录

    3. 安装Redis: - Redis是一个开源的使用ANSI C语言编写、支持网络、基于内存、可选持久性的键值对存储数据库。文章中提供了在CentOS上安装Redis的命令,包括使用yum安装依赖、下载Redis源码、编译安装以及修改配置...

    xdebug-5.6.zip

    安装Xdebug通常涉及以下几个步骤: 1. 下载与PHP版本兼容的Xdebug二进制文件(例如,这里的"xdebug-5.6"针对的是PHP 5.6版本)。 2. 将Xdebug库编译并安装到PHP的扩展目录。 3. 编辑php.ini文件,添加或修改Xdebug的...

    Xdebug配置和PHPStorm配置

    本文详细介绍了Xdebug的安装配置过程以及如何与PHPStorm配合使用进行高效的代码调试。通过以上步骤,开发人员可以充分利用Xdebug的强大功能,提高开发效率,同时也能更好地理解代码执行流程及性能瓶颈。

    php xdebug5.6

    zend_extension=xdebug.so # Windows下可能为xdebug.dll,路径需对应实际位置 xdebug.default_enable=1 xdebug.remote_enable=1 xdebug.remote_host=localhost xdebug.remote_port=9000 xdebug.idekey="PHPSTORM" # ...

    xdebug-2.5.5.tgz

    三、Linux环境下安装Xdebug 2.5.5 1. 安装依赖:首先确保系统安装了必要的编译工具和PHP开发头文件,如`build-essential`和`php-dev`。 2. 获取源码:通过访问官方网站或使用Git克隆仓库,获取Xdebug 2.5.5的源码...

Global site tag (gtag.js) - Google Analytics