我很好奇一些内置函数是如何实现的,但是直接在源代码中查找它非常耗时,有没有可以自动执行此操作的工具?
编辑
或者有没有可以调试到实际执行的c代码的工具?
大多数(全部?)可以从 PHP 访问的函数都定义在 PHP 源代码的 ext/ 目录下。如果您有递归搜索工具,请搜索 PHP_FUNCTION - 如果您将该搜索的结果保存到文本文件中,这将是一个很好的“索引”,用于确定 PHP 内置函数的定义位置。
真正核心的东西在 ext/standard 中。
一些罕见的“函数”在 PHP 编译到的 Zend 虚拟机中直接作为操作码实现,因此没有这样定义良好的 C 函数。例如,我认为 strlen 就是这样一个功能。
关于调试执行的 C 代码,我想可以使用类似dbg的东西;不过,您首先必须使用该--enable-debug
模式重新编译 PHP。
有关更多信息,您可以查看:
我从来没有用它来调试 PHP 本身,但我已经使用这两个页面来生成一些我在扩展时遇到的崩溃的回溯,据我记得,它工作正常。
作为旁注:使用用 编译的 PHP --enable-debug
,您可能必须重新编译您正在使用的一些扩展并更改它们的加载方式(例如,Xdebug 就是这种情况);而其他一些可能根本不再起作用。
我相信你应该看看这个。
Facebook 开发了一种将 PHP 代码转换为 C++ 的工具。
所以我想它在某种程度上也可以处理 C。