以apcu_store为例。
1,下载扩展包 https://pecl.php.net/package/...
2,全局搜 apcu_store
会找到很多,下面才是php函数跟底层c函数的衔接处
其中 php_apc.c 文件名, php_* 应该是所有扩展的一个共性。
PHP_FUNCTION 这个应该是所有php函数和c函数衔接的共同特征。
注意PHP_FUNCTION 这个宏,实际上是把函数名加了前缀:zif_*
所以,在gdb debug的时候,才会发现奇怪的
还有要注意的是,debug的时候,需要编译php的debug版本,使用 --enable-debug
./configure --prefix=~/dev/php-8.1.13/output --enable-fpm --enable-debug
遇到一个奇怪的现象,在apc_store_helper函数定义处打断点,发现进去三次,
使用 bt 发现调用栈也一样
后来将apcu重新编译成debug版本就只进去一次了。
./configure --with-php-config=~/dev/php-8.1.13/output/bin/php-config --enable-apcu-debug
还有就是gdb设断点的时候,经常提示文件找不到,这个错误可以忽略,实际是可以设置成功的。
全程感谢 陈雷 大佬指点,人真的是太nice了。推荐关注 LNMPRG源码研究
推荐他的慕课网课程 https://coding.imooc.com/lear... 手把手教php源码入门
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。