打印PHP堆栈信息

 



//调用堆栈函数,查找调用函数的源头,方便调试
function print_stack_trace()
{
$array =debug_backtrace();
//print_r($array);//信息很齐全
unset($array[0]);
foreach($array as $row)
{
$html .=$row['file'].':'.$row['line'].'行,调用方法:'.$row['function']."<p>";
}
return $html;
}
我在我的数据库的核心查询函数里面调用这个方法,打印结果如下:
D:\wamp\www\meilele\includes\cls_mysql.php:471行,调用方法:query
D:\wamp\www\meilele\includes\cls_mysql.php:507行,调用方法:getAll

D:\wamp\www\meilele\includes\lib_common.php:732行,调用方法:getAllCached

D:\wamp\www\meilele\includes\init.php:113行,调用方法:load_config

D:\wamp\www\meilele\index.php:4行,调用方法:include_once

一目了然,一直找到了入口,太强悍了。以后调试又多了一种办法


或者用下面的方法:

[php] view plain copy
$e = new Exception;
var_dump($e->getTraceAsString());


 


 

输出变量值



var_dump($a);  //变量的详细信息,有类型信息
print_r($a); //变量的简单形式,输出的value值没有类型

exit($a); //退出当前文件,并输出变量

//若$a是数组,则可以格式化输出,输出的value值没有类型
echo '<pre>';
print_r($a);

//格式化输出调试信息
echo "<pre>"//在输出前加上该句
var_dump($a);

exit; echo "<br>" //方便测试

//已经安装php环境,可以直接在中断中运行,比如下面
php -r "var_dump(urldecode('a+b%2b'));"