【问题标题】:How to trace code execution in PHP?如何在 PHP 中跟踪代码执行?
【发布时间】:2013-01-15 16:04:31
【问题描述】:

我想查看 PHP 脚本的整个代码执行的日志。像这样的东西:http://en.wikibooks.org/wiki/Ruby_Programming/Standard_Library/Tracer(因为没有更好的例子;请不要火焰)。

有没有办法在PHP中获取日志?

注意:我知道我可以使用调试器,但不一样。

【问题讨论】:

    标签: php trace


    【解决方案1】:

    Xdebug 绝对是你想要的,但也有像 callgrind from the valgrind suite 这样的东西。

    这里的 Zend 博文应该给你一些指点:http://devzone.zend.com/1139/profiling-php-applications-with-xdebug/

    【讨论】:

      【解决方案2】:

      phptrace 是一个很棒的跟踪 php 代码执行的工具

      【讨论】:

      • 这很有趣。谢谢分享。
      • 我会投赞成票,因为它实际上回答了这个问题,不像这里目前投票率最高的答案。还请阅读 phptrace 的文档页面,其中有一节介绍了与其他执行跟踪工具的比较。
      • 遗憾的是,截至 2018 年的废弃项目,仅支持 PHP 到 7.1。
      【解决方案3】:

      在任何函数中,您都可以使用debug_backtrace(...)查看整个回溯

      或者您可以使用Xdebug profiler 来分析您的 PHP 脚本。

      【讨论】:

      • debug_backtrace 放在 PHP 脚本中的特定位置,但我想查看整个代码执行的日志 - 从开始到结束。
      • 可能没看懂这个问题。该请求是针对执行跟踪工具的。这不像回溯或分析,但 Xdebug 确实 也执行执行跟踪。
      【解决方案4】:

      看看Kint

      这是类固醇上的 var_dump() 和 debug_backtrace()。易于使用,但功能强大且可定制。您的开发工具箱的重要补充。

      它还具有特定于平台的扩展here

      【讨论】:

      • github.com/nette/tracy 这是类固醇上的 var_dump 和 debug_backtrace :-)
      • 不明白这个问题。该请求是针对执行跟踪工具的。
      【解决方案5】:

      您可以使用由 Facebook 开发的名为 XHProf 的 PHP 扩展。

      它能够报告函数级调用计数和包容性 以及独占的挂墙时间、CPU 时间和内存使用情况。

      https://github.com/facebook/xhprof

      【讨论】:

      • Xhprof 对于本地和生产环境的性能跟踪非常有用,但对于调试其他问题却没有。
      【解决方案6】:

      这是我在 windows linux 子系统 (WSL) 中运行 php 或 Laravel 框架时需要跟踪的所有行。

      在系统中安装xdebug,然后编辑/etc/php/7.4/mods-available/xdebug.ini,包含以下详细信息

      zend_extension=xdebug.so
      xdebug.default_enable=1
      xdebug.remote_enable=1
      xdebug.remote_connect_back=1
      xdebug.remote_port = 9001
      xdebug.scream=0
      xdebug.cli_color=1
      xdebug.show_local_vars=1
      xdebug.remote_autostart=1
      
      ; this part here, above is used for line by line debug in vscode
      xdebug.auto_trace=1
      xdebug.trace_output_dir = /mnt/c/projects/www/phptraces
      xdebug.trace_output_name=trace.%u
      xdebug.collect_params=4
      xdebug.trace_format = 1
      

      这里是这个

      xdebug.trace_output_dir = /mnt/c/projects/www/phptraces
      

      是存储日志的路径

      对于 laravel 框架,它会生成非常大的文件,很可能 4GB 大小。所以我用了

      split -l 1000 trace.1576842503_368392.xt pieces/traces
      

      将其拆分为每个包含 1000 行的较小部分并将其存储到碎片目录中。

      然后您可以使用编辑器在文件中查找您要查找的内容

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-11-30
        • 1970-01-01
        • 1970-01-01
        • 2012-12-15
        • 2012-06-18
        • 2013-03-24
        • 1970-01-01
        相关资源
        最近更新 更多