关于 Xdebug--疯子哥德
    哥德疯了
   用户中心 您的位置:笔架山信息平台>> 笔客秀>> 疯子哥德>> 关于 Xdebug--疯子哥德
日历
<< << 2008 十一月 >> >>
1
2345678
9101112131415
16171819202122
23242526272829
30
个人资料
游客已登陆 (0)未知
笔行证 888888
昵称 hacder 
笔贝 Score1
加为好友 发送短信
栏目分类
最新日志
最新评论
统计信息
  • 访问计数:1584659
    本文:230 今天:1 本月 230
  • 加为好友 发送短信

  关于 Xdebug
2007-08-17 晴


刚刚看到了 Xdebug,想起了以前刚出来的时候用过,但是后来重装了系统,也由于没怎么用过,就没去重新搞了

这个是我刚才试用的一些心得

1 Xdebug的安装

下载地址: http://pecl4win.php.net/ext.php/php_xdebug.dll

把dll文件放到php的ext目录下,并且确保dll所在的文件在php.ini中extension_dir下
在php.ini中添加如下配置
extension=php_xdebug.dll

[Xdebug]
xdebug.auto_trace=on
xdebug.collect_params=on
xdebug.collect_return=on
xdebug.trace_output_dir="F:\www\xdebug"
xdebug.profiler_enable=on
xdebug.profiler_output_dir="F:\www\xdebug"

网上有人说要用zend扩展的方式来加载 也就是
zend_extension_ts="F:/php/ext/php_xdebug.dll"
但是我试过了 好像不用的
直接
extension=php_xdebug.dll
就可以了
用phpinfo也可以看到Xdebug项
[非站内图片]

重启Apache
上边的F:\www\xdebug 就是用来存放Xdebug输出文件的地方。

参数解释:
xdebug.auto_trace=on;
;自动打开“监测函数调用过程”的功模。该功能可以在你指定的目录中将函数调用的监测信息以文件的形式输出。此配置项的默认值为off。

xdebug.collect_params=on;
;打开收集“函数参数”的功能。将函数调用的参数值列入函数过程调用的监测信息中。此配置项的默认值为off。

xdebug.collect_return=on
;打开收集“函数返回值”的功能。将函数的返回值列入函数过程调用的监测信息中。此配置项的默认值为off。

xdebug.trace_output_dir=”F:\www\xdebug”
;设定函数调用监测信息的输出文件的路径。

xdebug.profiler_enable=on
;打开效能监测器。

xdebug.profiler_output_dir=”F:\www\xdebug”;
;设定效能监测信息输出文件的路径。

更具体的参数请看:
http://www.xdebug.org/docs-settings.php


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

Xdebug 扩展加载后,Xdebug会对原有的某些PHP函数进行覆写,以便好更好地进行Debug。比如var_dump()函数,我们知道通常我们需要在函数前 后加上”<pre>…</pre>”才能够让输出的变量信息比较美观、可读性好。但是加载了Xdebug后,我们不再需要这样做 了,Xdebug不但自动给我们加上了<pre>标签,还给变量加上颜色。

2 安装WinCacheGrind。

装好Xdebug后,通过浏览器访问要测试的页面,会在profile_output_dir下生成一个名为cachegrind.out.*的文件,但是他输出的一大堆数据, 显然不是给人类看的,那么我们怎么从中找到我们想要的呢?答案是,用WinCacheGrind。

从这里下载 http://sourceforge.net/projects/wincachegrind/ 安装我就不多说了。
[非站内图片]

3. 试用Xdebug测试脚本执行时间

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

echo xdebug_time_index();

就可以看到类似0.00368690490723的时间了

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

Xdebug同样提供了一个函数xdebug_memory_usage()来实现这样的功能,另外xdebug还提供了一个xdebug_peak_memory_usage()函数来查看内存占用的峰值。
.
# posted by hacder @ 2007-08-17 03:14:43 评论(0)




地址:




 
笔 名:
*
评 论:
最多1000字。当前字数:0
*
联系方式:

             

 
copyriht© beaplat.com All Rights Reserved 笔架山信息平台
Powered by 笔架山信息平台技术研发小组 henry
本站版权归笔架山信息平台所有,未经书面授权禁止使用