PHP Xdebug调试专题 - 记录运行轨迹

  • 作者:KK

  • 发表日期:2016.2.24


先设置以下两项配置

#开启自动跟踪回溯
xdebug.auto_trace=on

#设置回溯信息输出目录
xdebug.trace_output_dir="E:\xdebug"

然后通过浏览器访问任何一个http入口脚本,脚本内容可以复制我下面的演示代码:

$str = 'abc';
$str1 = substr($str, 0, 2);

function xx($a, $b){
	$x = array();
	array_push($x, $a);
	array_push($x, $b);
	yy();
	return $x;
}

function yy(){
	print_r(123);
}

运行后就会在回溯信息输出目录下产生类似这样的一个文件

而打开它文件内容则是这样的:

内容中每一行都显示了在哪个文件的哪一行执行了哪个函数,其中你注意一下第1次出现的array_push函数相对于上一行的xx函数缩进了的,这意思是说array_push函数是在xx函数里面执行的


换成运行你自己的项目代码,相信就能看到成千上万行回溯代码了,包括调用了哪个对象的哪个方法也是这么看

这个回溯追踪的好处是你如果平时发现页面突然变空白了,怎么输出东西都看不见,于是只要通过这个回溯追踪调试,看看输出信息文件的最后几行调用的函数和文件行号你就大概知道出错位置在哪里了

最后提醒:它只记录有函数执行的地方,没有函数执行的地方是不会语录的,比如echo,include,isset等语句是不会记录的,于是你也能从中确认哪些是函数,哪些是语句了