以下代码是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]
有没有办法获得完整的呼叫追踪,而不仅仅是调用堆栈跟踪?
答案 0 :(得分:0)
是的,有,但这只能通过在执行期间监视整个脚本来完成。它被称为“剖析”。
XDebug是允许这样做的工具之一。有关详细信息,请参阅http://www.xdebug.org/docs/profiler。请注意,XDebug将其分析数据写入目录,因此在执行期间不会从PHP内部直接访问数据(这也会破坏分析数据,因为这些调用也会受到监控)。
还有XHProf http://php.net/manual/en/book.xhprof.php允许在PHP中打开和关闭,以及提供HTML GUI。 example看起来相当容易。