很多人的误解:xdebug通过插入代码完成代码执行统计,其实不然,xdebug的原理如下:
1、执行PHP脚本
2、XDEBUG在Module_init中重写每种OPCODE的处理函数
3、PHP编译PHP到OPCODE
4、Zend引擎开始执行OPCODE
5、调用Xdebug的OPCODE处理函数,获取文件和行号信息,统计。
6、返回ZEND_USER_OPCODE_DISPATCH,表示需要执行原生的Zend的处理函数
#defineZEND_USER_OPCODE_DISPATCH 2 /* calloriginal opcode handler */
7、执行原生的Zend的处理函数