打印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']."

";

}

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 '

';

print_r($a);

//格式化输出调试信息

echo "

"//在输出前加上该句 

var_dump($a);

exit; echo "
" //方便测试

//已经安装php环境,可以直接在中断中运行,比如下面

php -r "var_dump(urldecode('a+b%2b'));"

 

查看原文