我有一个脚本,嵌套的包含很多if函数和函数互相调用。基本上,它是一个编码的噩梦。打印执行的PHP代码(代码路径)
有没有什么办法可以“打印”PHP代码执行?我的意思是,从开始到结束打印代码的实际流程和脚本所采用的路径?
我有一个脚本,嵌套的包含很多if函数和函数互相调用。基本上,它是一个编码的噩梦。打印执行的PHP代码(代码路径)
有没有什么办法可以“打印”PHP代码执行?我的意思是,从开始到结束打印代码的实际流程和脚本所采用的路径?
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__);
然后尾日志文件创建。一旦完成,删除调试语句就是编辑器的简单查找/替换操作。
许多框架都有调试对象,这些对象的构建方式不止于此,但如果您正在处理独立代码,那么这样简单的应用程序就足以让您了解。
您可以尝试debug_backtrace()或debug_print_backtrace()。
此外,我推荐使用Xdebug。它打印在例外情况一个非常有用的堆栈跟踪(你可以配置它来打印出每一个方法的参数和每一个局部变量(xdebug.collect_params=4
和xdebug.show_local_vars=on
配置参数)。
看看code coverage工具。这可以让你识别当脚本运行时,实际执行的那些函数和代码行
是的,它可以! debug_backtrace()会做他想做的事情。 Xdebug会给他生成一个cachegrind文件的可能性。 – AntonioCS 2010-12-12 23:34:52
debug_backtrace函数很有用,但它们只会在给定的时间返回给你一个调用堆栈。这听起来像OP希望逐行跟踪他的代码,这意味着更高级的工具,如xdebug。 – 2010-12-13 02:54:05
+1用于使用Xdebug提及代码覆盖率分析。 – 2010-12-18 22:47:33