2010-12-12 66 views
2

我有一个脚本,嵌套的包含很多if函数和函数互相调用。基本上,它是一个编码的噩梦。打印执行的PHP代码(代码路径)

有没有什么办法可以“打印”PHP代码执行?我的意思是,从开始到结束打印代码的实际流程和脚本所采用的路径?

回答

2

PHP不能开箱即用,您需要在您的PHP开发机器上安装the xDebug extension安装后,您可以使用the code coverage function确定哪些线路已执行

缺乏的是,我想创建一个简单的调试功能,在你的代码

public function myDebugString($string) 
{ 
    file_put_contents('/tmp/debug.log',"$string\n",FILE_APPEND); 
    return; 
} 

的顶部包括,然后整个您添加调用该代码

myDebugString('Called at ' . __LINE__); 

然后尾日志文件创建。一旦完成,删除调试语句就是编辑器的简单查找/替换操作。

许多框架都有调试对象,这些对象的构建方式不止于此,但如果您正在处理独立代码,那么这样简单的应用程序就足以让您了解。

+0

是的,它可以! debug_backtrace()会做他想做的事情。 Xdebug会给他生成一个cachegrind文件的可能性。 – AntonioCS 2010-12-12 23:34:52

+0

debug_backtrace函数很有用,但它们只会在给定的时间返回给你一个调用堆栈。这听起来像OP希望逐行跟踪他的代码,这意味着更高级的工具,如xdebug。 – 2010-12-13 02:54:05

+0

+1用于使用Xdebug提及代码覆盖率分析。 – 2010-12-18 22:47:33

2

您可以尝试debug_backtrace()debug_print_backtrace()

此外,我推荐使用Xdebug。它打印在例外情况一个非常有用的堆栈跟踪(你可以配置它来打印出每一个方法的参数和每一个局部变量(xdebug.collect_params=4xdebug.show_local_vars=on配置参数)。

0

看看code coverage工具。这可以让你识别当脚本运行时,实际执行的那些函数和代码行