0

是以下代码PHP:

<?php

function a() {
    b();
}

function b() {
    c();
}

function c(){
    debug_print_backtrace();
}

function d() {
    echo "I am a function d(). Where on the list is my call?\n";
}

d();

a();

?>

上面的示例将输出类似于:

I am a function d(). Where on the list is my call?
#0  c() called at [D:\tests.php:18]
#1  b() called at [D:\tests.php:14]
#2  a() called at [D:\tests.php:31]

有没有办法获得完整的调用跟踪,而不仅仅是调用堆栈跟踪?

4

1 回答 1

0

是的,有,但这只能通过在执行期间监视整个脚本来完成。它被称为“剖析”。

XDebug 是允许这样做的工具之一。有关详细信息,请参阅http://www.xdebug.org/docs/profiler 。请注意,XDebug 将其分析数据写入目录,因此在执行期间无法从 PHP 内部直接访问数据(这也会损坏分析数据,因为这些调用也会受到监视)。

还有 XHProf http://php.net/manual/en/book.xhprof.php允许在 PHP 中打开和关闭,并提供 HTML GUI。这个例子看起来相当简单。

于 2014-08-02T11:46:58.067 回答