如何找到构建页面所执行的函数列表?
我想要执行到代码中某个点的所有函数的列表,有点像 debug_backtrace() 但包括不在调用 debug_backtrace() 的确切线程中的函数。例如 :
a();
function a() {
b();
c();
d();
}
function b() { }
function c() { }
function d() { print all_trace(); }
会产生 : ,
a(), b(), c(), d()
而不是
a(), d()
像 debug_backtrace() 那样
I want the list of all functions executed to a certain point in code, somehow like debug_backtrace() but including functions not in the exact thread that leads to where debug_backtrace() is called. e.g :
a();
function a() {
b();
c();
d();
}
function b() { }
function c() { }
function d() { print all_trace(); }
would produce :
a(), b(), c(), d()
and not
a(), d()
like debug_backtrace() would
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
查看 xdebug 跟踪工具
check out xdebug tracing facility
您可以安装 tick 处理程序,并在每个刻度上使用 debug_backtrace 查找您所在的函数并将其添加到列表中。它会降低性能,但会给出您想要的列表。
下面是你如何获得你指定的输出:
真的很讨厌 - 正如其他人所建议的,最好使用像 xdebug 专为这项工作而设计,如果可以的话......
You could install a tick handler, and on every tick use debug_backtrace to find which function you are in and add it to a list. It will kill performance, but would give the list you desire.
Here's how you'd get the output you specify from this:
Pretty nasty really - as others suggest, better to use tools like xdebug designed for the job if you can...
服务器上不需要 Xdebug 或 dbg.so,返回更详细的消息,基于 Paul Dixon 的解决方案:
diyism_trace.php:
test.php:
输出:
need no Xdebug or dbg.so on server, return more detailed message, based on Paul Dixon's solution:
diyism_trace.php:
test.php:
output: