php - 跟踪 PHP 中的每个函数调用

标签 php debugging debug-backtrace phpdebugbar

我正在尝试在我的 PHP 应用程序中创建跟踪日志。打开 Debug模式将开始跟踪函数的流程。

以下是我对实现的期望:

function callA(x) { ... }  //XYZ.php
function callB() { ... callA(1) ... }  //ABC.php

callB(); //main.php

我想跟踪 PHP 代码的流程。

我知道我可以使用 debug_backtrace ,但在这种情况下,我需要在其中一个函数中明确调用 debug_backtrace

但是,我想要的是自动跟踪代码的流程。

有什么办法吗

最佳答案

通常,这将通过像 xdebug 这样作为 PHP 扩展运行的分析器来完成。但是,如果您必须通过 PHP 本身编写的代码来跟踪函数调用,那么最好的办法就是使用 register_tick_function。它每隔几个 native CPU 周期就会调用您的“滴答函数”,而不是等待另一个函数调用。

declare(ticks = 1);
$calls = array();
function tracer() {
    global $calls;
    $calls[] = array_shift(debug_backtrace());
}
register_tick_function('tracer');

关于php - 跟踪 PHP 中的每个函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36930041/

相关文章:

php - Magento 事件观察器在某些机器上无法工作

php - 内容安全策略 Internet Explorer 错误

php - 您可以解决 PHP 中超出范围的后期静态绑定(bind)吗?

c++ - 如何通过 glibc/malloc 回溯调试崩溃的 Linux 程序(无可用核心)?

php - 如何将日期 (2020-11-23T13 :26:02. 000Z) 格式化为 Y-m-d h :i:s in laravel using Carbon?

php - 如何在 PHP 中获取有用的错误消息?

c# - 仅调试中的 Visual Studio 2015 UnauthorizedAccessException

angular - 如何使用 @HostListener ('window:beforeunload' ) 调用方法?

c - 回溯日志中的堆栈帧 NULL