一、什么是Xdebug
Xdebug是一个开放源代码的PHP程序调试器,可以用来跟踪、调试和分析PHP程序的运行状况。Xdebug现在的最新版本是Xdebug 2.1.0
二、如何安装Xdebug?
下面以Windows平台下PHP5.3.2为例说明安装过程:
第一步:下载php_xdebug-2.1.0-5.3-vc6.dll(下载地址:http://www.xdebug.org/files/php_xdebug-2.1.0-5.3-vc6.dll)。
第二步:将下载的文件重命名为php_xdebug.dll,并copy到php的ext目录下。
第三步:在C盘创建一个目录xdebug,然后修改PHP的配置文件(php.ini),在末尾加上:
extension=php_xdebug.dll
[Xdebug]
xdebug.profiler_enable=on
xdebug.trace_output_dir="c:/xdebug"
xdebug.profiler_output_dir="c:/xdebug"
第四步:重启Apache
第五步:创建一个test.php,内容为<?php phpinfo();?>,在输出的内容中如果看到xdebug,说明安装成功。
三、Xdebug应用
1.代码执行时间
test_xdebug_1.php
<?php
//查看代码执行时间
echo xdebug_time_index().'<br>';
function test(){
$sum = 0;
for($i=0;$i<100000;$i++){
$sum += $i;
}
return $sum;
}
echo test().'<br>';
echo xdebug_time_index().'<br>';
?>
输出结果:
0.0014331340789795
4999950000
0.038825035095215
说明:表示这段代码执行了0.038825035095215秒(本机,每次执行时间不一样)。
2.上下文信息收集
test_xdebug_2.php
<?php
//上下文信息收集
function sub($a,$b){
echo xdebug_call_line().':';
echo xdebug_call_function().'.';
return $a-$b;
}
function do_sub($a,$b){
sub($a,$b);//sub函数是在do_sub函数中被调用,调用的行号是10
}
echo do_sub(100,50).'<br>';
?>
输出结果:10:do_sub.
说明:表示sub函数是在do_sub函数中被调用,调用的行号是10
3.代码覆盖范围
test_xdebug_3.php
<?php
//代码覆盖范围
$a=100; $b=200; $c=500;
xdebug_start_code_coverage();
if($a>$b){//step 1
echo '$a>$b';
}else{
if($a>$c){//step 2
echo '$a>$c';
}else{
echo '$a(100)<$c(500)';//step 3
}
}
echo '<pre>';
print_r(xdebug_get_code_coverage());
echo '</pre>';
?>
输出结果:
$a(100)<$c(500)
Array
(
[E:\EasyPHP\www\test\test_xdebug_3.php] => Array
(
[7] => 1
[10] => 1
[13] => 1
[17] => 1
[18] => 1
)
)
说明:此输出结果表示执行的行号依次为7,10,13,17,18,在逻辑比较复杂的程序中,可以采用此方法分析程序的“走向”。
代码下载: http://www.xiaojunbin.com/download/xdebug_test.rar
Xdebug是一个开放源代码的PHP程序调试器,可以用来跟踪、调试和分析PHP程序的运行状况。Xdebug现在的最新版本是Xdebug 2.1.0
二、如何安装Xdebug?
下面以Windows平台下PHP5.3.2为例说明安装过程:
第一步:下载php_xdebug-2.1.0-5.3-vc6.dll(下载地址:http://www.xdebug.org/files/php_xdebug-2.1.0-5.3-vc6.dll)。
第二步:将下载的文件重命名为php_xdebug.dll,并copy到php的ext目录下。
第三步:在C盘创建一个目录xdebug,然后修改PHP的配置文件(php.ini),在末尾加上:
extension=php_xdebug.dll
[Xdebug]
xdebug.profiler_enable=on
xdebug.trace_output_dir="c:/xdebug"
xdebug.profiler_output_dir="c:/xdebug"
第四步:重启Apache
第五步:创建一个test.php,内容为<?php phpinfo();?>,在输出的内容中如果看到xdebug,说明安装成功。
三、Xdebug应用
1.代码执行时间
test_xdebug_1.php
<?php
//查看代码执行时间
echo xdebug_time_index().'<br>';
function test(){
$sum = 0;
for($i=0;$i<100000;$i++){
$sum += $i;
}
return $sum;
}
echo test().'<br>';
echo xdebug_time_index().'<br>';
?>
输出结果:
0.0014331340789795
4999950000
0.038825035095215
说明:表示这段代码执行了0.038825035095215秒(本机,每次执行时间不一样)。
2.上下文信息收集
test_xdebug_2.php
<?php
//上下文信息收集
function sub($a,$b){
echo xdebug_call_line().':';
echo xdebug_call_function().'.';
return $a-$b;
}
function do_sub($a,$b){
sub($a,$b);//sub函数是在do_sub函数中被调用,调用的行号是10
}
echo do_sub(100,50).'<br>';
?>
输出结果:10:do_sub.
说明:表示sub函数是在do_sub函数中被调用,调用的行号是10
3.代码覆盖范围
test_xdebug_3.php
<?php
//代码覆盖范围
$a=100; $b=200; $c=500;
xdebug_start_code_coverage();
if($a>$b){//step 1
echo '$a>$b';
}else{
if($a>$c){//step 2
echo '$a>$c';
}else{
echo '$a(100)<$c(500)';//step 3
}
}
echo '<pre>';
print_r(xdebug_get_code_coverage());
echo '</pre>';
?>
输出结果:
$a(100)<$c(500)
Array
(
[E:\EasyPHP\www\test\test_xdebug_3.php] => Array
(
[7] => 1
[10] => 1
[13] => 1
[17] => 1
[18] => 1
)
)
说明:此输出结果表示执行的行号依次为7,10,13,17,18,在逻辑比较复杂的程序中,可以采用此方法分析程序的“走向”。
代码下载: http://www.xiaojunbin.com/download/xdebug_test.rar