一段时间以来,我一直在使用 xdebug 调试和理解 php 项目中的代码,并且有时会遇到不清楚 PHP 内部发生了什么的情况。
是否可以设置 xdebug 或 gdb 以便我可以追踪到实际的 php 内置函数?
如果您使用的是 macosx、solaris 或最近的 freebsd 系统,您可以向它扔一点 dtrace。它可以为那些太多“PHP 正在做什么?”的人派上用场。时刻。
我对此表示怀疑,xdebug 旨在跟踪您的 PHP 代码,而不是内部。假定内部是无错误的(显然有时并非如此,但这超出了 xdebug 的范围)。
如果您想知道内置函数的作用,您可以随时查看 PHP 源代码,但这有时很麻烦。当我想知道他们会做什么时,PHP 手册文档总是能很好地为我服务。
您可以使用 gdb 跟踪 C 级代码,前提是您已使用调试符号编译了 php。看看这里开始:
测试 Zend 引擎输出的一种方法是查看操作码,您可以使用Derick Rethan 的 VLD(Vulcan Logic Dissasembler),它似乎也在PECL上。注意:仅适用于 *nix 系统(有关要求,请参见站点)。
调试这些操作码的一些示例可以在Sara Golemon 的博客中找到,如了解操作码和一段字符串有多长?.