【问题标题】:Print the executed PHP code (Path of code taken)打印执行的 PHP 代码(采用的代码路径)
【发布时间】:2012-12-25 02:00:56
【问题描述】:

我有一个脚本,其中包含许多嵌套包含和函数,它们从许多 if 条件中相互调用。基本上,这是一场编码噩梦。

有什么方法可以“打印”执行的 PHP 代码吗?我的意思是,打印代码的实际流程和脚本从头到尾的路径?

【问题讨论】:

    标签: php xdebug


    【解决方案1】:

    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__);
    

    然后tail创建的日志文件。完成后,删除调试语句对您的编辑器来说是一个简单的查找/替换操作。

    许多框架的调试对象远不止构建它,但如果您正在处理独立代码,像这样简单的东西应该足以让您通过。

    【讨论】:

    • 可以! debug_backtrace() 会做他想做的事。 Xdebug 将使他能够生成缓存研磨文件。
    • debug_backtrace 函数很有用,但它们只会在任何给定时间返回一个调用堆栈。听起来 OP 想要逐行跟踪他的代码,这意味着像 xdebug 这样更高级的工具。
    【解决方案2】:

    你可以试试debug_backtrace()debug_print_backtrace()

    另外,我建议使用 Xdebug。它会在异常上打印一个非常有用的堆栈跟踪(您可以将其配置为打印出每个方法参数和每个局部变量(xdebug.collect_params=4xdebug.show_local_vars=on 配置参数)。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-02-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-18
        • 1970-01-01
        相关资源
        最近更新 更多