我可以用PHP打印整个程序状态吗?

时间:2013-12-18 16:07:10

标签: php introspection callstack heap-dump

PHP提供了一些令人印象深刻的内省工具:get_defined_varsget_defined_functionsget_defined_constantsdebug_backtrace等。从本质上讲,它们提供了整个程序状态的视图:堆栈和堆。我想知道使用这些设施可以获得程序状态的完整视图。

范围内的堆和所有已定义的变量可以建模为带标签的有向图。例如,有可能写一些能给我Graphviz / DOT描述的东西吗?我正在想象类似于this article about 'How PHP manages variables'中的图表或the PHP manual page on garbage collection中的图表。

4 个答案:

答案 0 :(得分:1)

结帐xdebug加上xdebug chrome扩展程序。 https://chrome.google.com/webstore/detail/xdebug-helper/eadndfjplgieldjbigjakmdgkmoaaaoc?hl=en

扩展可用于启用php的分析/调试。您可以将其与eclipse或任何其他支持xdebug的ide进行链接以进行调试。

如果生成配置文件,可以将结果放入kcachegrind或wincachegrind,以获取内存分配的映射视图,每个函数所花费的时间以及其他内容。

https://www.youtube.com/watch?v=YHKFdfbcP8U

答案 1 :(得分:1)

如果生成配置文件,可以将结果放入kcachegrind或wincachegrind,以获取内存分配的映射视图,每个函数所花费的时间以及其他内容。

https://www.youtube.com/watch?v=YHKFdfbcP8U

答案 2 :(得分:0)

我不知道是否有任何现有工具,但您一定要查看xdebug profiler http://xdebug.org/docs/profiler以及kcachegrind。它将为您提供整个堆栈的可视化:调用的每个函数,调用它的次数以及它/它们花费的时间。

答案 3 :(得分:0)

get_defined_vars
get_defined_functions
get_defined_constants

有没有办法从php文件中获取用户定义的php函数,变量,常量?以下函数不是最好的方法,因为它们获得所有decalred函数/变量/常量(具有数百个php的内置常量和内部php函数