Xdebug安装与使用

为什么需要Debugger?

很多PHP程序员调试使用echo、print_r()、var_dump()、printf()等,其实对 于有较丰富开发经验的程序员来说这些也已经足够了,他们往往可以在程序执行的过程中,通过输出特定变量的值可以判断程序执行是否正确,甚至效率高低也可以 看出来(当然可能还需要使用一些时间函数)。那么我们为什么还需要一个专门的调试程序来监控我们的程序运行呢? 这个问题的答案不妨留到后面来揭晓。

什么是Xdebug?

Xdebug是一个开放源代码的PHP程序调试器(即一个Debug工具),可以用来跟踪,调试和分析PHP程序的运行状况。

如何安装Xdebug?

1. 打开http://www.xdebug.org/download.php下载相应的版本

Win: Windows binaries版本

Linux: source

得到一个dll文件(win)或运行安装文件(linux)

2. 安装

Win:将下载的dll文件放到相应的目录中。比如我的就放D:\xampp\php\ext下面;

Linux:执行安装文件

tar -xvzf xdebug-2.1.2.tgz

cd  xdebug-2.1.2

phpize (如果phpize没有这个command,需要安装一次phpize。phpize可以让php支持扩展模块)安装phpize:sudo apt-get install php5-dev

如果安装了继续进行下面命令

./configure

make

make install

会有这个界面

cp modules/xdebug.so /usr/lib/php5/20090626+lfs 将xdebug.so文件移到php5下面

3. 编辑php.ini,加入下面几行:

[Xdebug]

zend_extension=D:\xampp\php\ext\php_xdebug.dll   (Win)

zend_extension= /usr/lib/php5/20090626+lfs/xdebug.so (Linux)

xdebug.profiler_enable=on

xdebug.trace_output_dir="../Projects/xdebug"

xdebug.profiler_output_dir="../Projects/xdebug"

后面的目录“../Projects/xdebug”为你想要放置Xdebug输出的数据文件的目录,可自由设置。

4. 重启Apache;

5. 写一个test.php,内容为<?php phpinfo(); ?>,如果输出的内容中有看到xdebug,说明安装配置成功。如下图:

现在我们来从最简单的程序调试开始一步步介绍Xdebug。

调试:

我们先写一个可以导致执行出错的程序,例如尝试包含一个不存在的文件。

testXdebug.php

<?php
require_once(‘abc.php’);
?>

然后通过浏览器访问,我们惊奇地发现,出错信息变成了彩色的了:

不过除了样式改变,和我们平时打印的出错信息内容没什么不同,意义不大。好,我们继续改写程序:

testXdebug2.php

<?php
testXdebug();
function testXdebug() {
       require_once(‘abc.php‘);
}
?>

输出信息:

发现了什么? Xdebug跟踪代码的执行,找到了出错的函数testXdebug()。

我们把代码再写得复杂一些: 

testXdebug3.php

<?php
testXdebug();
function testXdebug() {
       requireFile();    
}
function requireFile() {
       require_once(‘abc.php‘);
}
?>

输出信息:

也就是说Xdebug具有类似于Java的Exception的“跟踪回溯”的功能,可以根据程序的执行一步步跟踪到出错的具体位置,哪怕程序中的调用很复杂,我们也可以通过这个功能来理清代码关系,迅速定位,快速排错。

其实PHP函数debug_backtrace()也有类似的功能,但是要注意debug_backtrace()函数只在PHP4.3.0之后版本及PHP5中才生效。这个函数是PHP开发团队在PHP5中新增的函数,然后又反向移植到PHP4.3中。

如何利用Xdebug测试脚本执行时间

测试某段脚本的执行时间,通常我们都需要用到microtime()函数来确定当前时间。例如PHP手册上的例子:

<?php
/**
* Simple function to replicate PHP 5 behaviour
*/
function microtime_float()
{
      list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
$time_start = microtime_float();
// Sleep for a while
usleep(100);
$time_end = microtime_float();
$time = $time_end - $time_start;
echo "Did nothing in $time seconds\n";
?>

但是microtime()返回的值是微秒数及绝对时间戳(例如“0.03520000 1153122275”),没有可读性。所以如上程序,我们需要另外写一个函数microtime_float(),来将两者相加。

Xdebug自带了一个函数xdebug_time_index()来显示时间。

如何测定脚本占用的内存?

有时候我们想知道程序执行到某个特定阶段时到底占用了多大内存,为此PHP提供了函数memory_get_usage()。这个函数只有当PHP编译时使用了-enable-memory-limit参数时才有效。 

Xdebug同样提供了一个函数xdebug_memory_usage()来实现这样的功能,另外xdebug还提供了一个xdebug_peak_memory_usage()函数来查看内存占用的峰值。

如何检测代码中的不足?

有时候代码没有明显的编写错误,没有显示任何错误信息(如error、warning、notice等),但是这不表明代码就是正确无误的。有时候可能某段代码执行时间过长,占用内存过多以致于影响整个系统的效率,我们没有办法直接看出来是哪部份代码出了问题。这时候我们希望把代码的每个阶段的运行情况都监控起来,写到日志文件中去,运行一段时间后再进行分析,找到问题所在。

回忆一下,之前我们编辑php.ini文件

加入

[Xdebug]

xdebug.profiler_enable=on

xdebug.trace_output_dir="I:\Projects\xdebug"

xdebug.profiler_output_dir="I:\Projects\xdebug"

这几行,目的就在于把执行情况的分析文件写入到”../Projects/xdebug”目录中去(你可以替换成任何你想设定的目录)。如果你执行某段程序后,再打开相应的目录,可以发现生成了一堆文件,例如cachegrind.out.1169585776这种格式命名的文件。这些就是Xdebug生成的分析文件。用编辑器打开你可以看到很多程序运行的相关细节信息,

最后:

Xdebug提供了各种自带的函数,并对已有的某些PHP函数进行覆写,可以方便地用于调试排错;Xdebug还可以跟踪程序的运行,通过对日志文件的分析,我们可以迅速找到程序运行的瓶颈所在,提高程序效率,从而提高整个系统的性能。

原文地址:https://www.cnblogs.com/linqingvoe/p/10907672.html

时间: 2024-11-06 07:35:32

Xdebug安装与使用的相关文章

Xdebug安装对应版本与配置

Xdebug安装地址https://xdebug.org/download.php,进入下载页面后点击custom installation instructions,可以找到适合的Xdebug版本. 如果你点击了custom installation instructions,会进入下面的页面,把本地运行phpinfo()后的页面的html源代码复制粘贴到输入框,点击下面的Analyse my phpinfo() output提交即可. 会跳到类似这样的页面,因为我已经安装,所以显示XDEBU

PHP调试工具Xdebug安装配置教程

PHP调试工具Xdebug安装配置教程 说到PHP代码调试,对于有经验的PHPer,通过echo.print_r.var_dump函数,或PHP开发工具zend studio.editplus可解决大部分问题,但是对于PHP入门学习的童鞋来说有一定的难度,而且仅仅通过上述这些PHP调试手段,也很难准确发现PHP性能方面的问题,Xdebug是一个非常有用的PHP调试工具. Xdebug作为PHP调试工具,提供了丰富的调试函数,也可将Xdebug安装配置为zend studio.editplus调试

Xdebug安装对应版本与配置 - cxscode - 博客园

Xdebug安装地址https://xdebug.org/download.php,进入下载页面后点击custom installation instructions,可以找到适合的Xdebug版本. 如果你点击了custom installation instructions,会进入下面的页面,把本地运行phpinfo()后的页面的html源代码复制粘贴到输入框,点击下面的Analyse my phpinfo() output提交即可. 会跳到类似这样的页面,因为我已经安装,所以显示XDEBU

php 中xdebug安装

实验环境CentOS phpinfo() 显示 PHP Version 5.3.3 去官网http://www.xdebug.org/对应下载 xdebug-2.2.5 linux下解压xdebug包. 1.进入xdebug,在这个目录下先运行php目录下面的bin/phpize: 我的机子,运行phpize出错 [[email protected] xdebug-2.2.5]# phpize -bash: phpize: command not found 安装phpize phpize是属于

windows 下 PHP Xdebug 安装

最近有小伙伴问我如何安装 xdebug ,想了想决定写篇博文,让小伙伴们自己看好了. 说明:开发环境为windows 首先 输出 phpinfo(); 复制内容到 http://www.xdebug.org/find-binary.php 这一步其实就是 xdebug 官方帮你确定你的php开发版本 . 接着在弹出页面下载相应 dll 文件,按照他的提示复制到相应位置即可 通常为php的ext扩展文件夹 最后打开你的php.ini 输入以下内容 ;加载xdebug扩展 zend_extensio

xdebug安装

sudo apt-get install php-pearsudo apt-get install php5-devsudo pecl install xdebug下载安装编译完后,在php.ini 中加入extension=xdebug.so[zend]zend_extension="/usr/local/php/modules/xdebug.so" 重启apache

xdebug安装及使用小结

最近安装了一下xedug,并且学习了一下如何使用.安装xdebug的初衷是为了深入研究一下PHP的垃圾回收机制. 先说一下安装吧.我使用的php版本是5.3.3,windows 32 为环境. 先从http://www.xdebug.org/files/php_xdebug-2.1.0-5.3-vc6.dll下载了拓展文件 放入php的ext目录下. 接着改写了php.ini [Xdebug] zend_extension="E:/wamp/bin\php/php5.3.3/ext/php_xd

基于lnmp.org的xdebug安装

1. 下载xdebug wget http://xdebug.org/files/xdebug-2.3.3.tgz 2. 创建一个目录: mkdir ./xdebug 3. 复制xdebug包到xdebug目录 cp xdebug-2.3.3.tgz --target-directory=./xdebug 4. 进入./xdebug 目录,  cd xdebug 5. 解压: tar -xzf xdebug-2.3.3.tgz 6. cd xdebug-2.3.3 7. 执行: /usr/loc

PHP Xdebug安装及配置

1.首先在官方网站下载dll文件; Xdebug官方网站 2.将php_xdebug.dll文件放入php/ext文件夹下; 3.编辑php.ini,在文件最后加入如下代码: ; Xdebug zend_extension="c:\server\php71\ext\php_xdebug.dll" 4.重启服务器 httpd -k restart