关闭

XDebug用法大全(一)错误调试

标签: phpxdebug
1103人阅读 评论(0) 收藏 举报
分类:

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

一、堆栈化的错误调试

首先来看看Xdebug最基本的功能——堆栈化的错误调试,代码很简单,仅仅有一个名为t1的函数,函数中require了一个不存在的PHP文件

function t1()
{
	require 'notexists.php';
}

t1();

执行结果如下,可以看到非常详细的错误信息。程序首先执行t1函数,然后在代码的11行抛出了一个致命错误。


二、计算脚本的执行时间和消耗的内存

如果不使用xdebug,会使用microtime函数来计算执行时间,或者通过memory_get_usage/memory_get_peak_usage函数来计算消耗的内存。安装xdebug后,可以使用xdebug_time_index和xdebug_memory_usage/xdebug_peak_memory_usage来实现。要注意的是xdebug_time_index()函数返回的是脚本从mian开始执行到xdebug_time_index函数执行消耗的时间。

代码如下:

echo "xdebug_memory_usage:".xdebug_memory_usage();
echo 'xdebug_time_index:'.xdebug_time_index();
$arr=array();
for($i=1;$i<=10000;++$i)
{
	array_push($arr, $i);
}
echo "xdebug_memory_usage:".xdebug_memory_usage();
echo 'xdebug_time_index:'.xdebug_time_index();
while(!is_null(array_pop($arr)))
{
	
}
echo "xdebug_memory_usage:".xdebug_memory_usage();
echo 'xdebug_time_index:'.xdebug_time_index();
echo "xdebug_peak_memory_usage:".xdebug_peak_memory_usage();//显示内存峰值

这样对代码的入侵性太大了,其实xdebug提供了一个非常好的函数,xdebug_print_function_stack();该函数可以输出对函数对账跟踪的结果,使用时,直接加载在代码的尾部即可。


三、xdebug其他函数

xdebug_zval(); 输出变量的(refcount, is_ref=)信息

integer xdebug_get_stack_depth();返回调用函数的stack深度, main()为0级



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:177757次
    • 积分:3438
    • 等级:
    • 排名:第10250名
    • 原创:162篇
    • 转载:32篇
    • 译文:3篇
    • 评论:14条
    博客专栏