用PHP

时间:2016-04-29 05:13:00

标签: php debugging debug-backtrace phpdebugbar

我正在尝试在PHP应用程序中创建一个跟踪器日志。打开调试模式将开始跟踪功能的流程。

以下是我期望的实施方式:

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

callB(); //main.php

我想跟踪PHP代码的流程。

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

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

有没有办法做到这一点。

1 个答案:

答案 0 :(得分:1)

通常情况下,这将使用像xdebug这样作为PHP扩展运行的分析器来完成。但是如果你必须通过用PHP本身编写的代码来跟踪函数调用,你可以做的最好的事情就是使用register_tick_function调用你的" tick函数"每隔几个本机CPU周期而不是等待另一个函数调用

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