mac 开发php扩展 环境准备,debug 编译php,gdb 调试php程序

我现在是在mac下开发扩展 给小伙伴几个解决方案

1 . brew 安装debug版本

brew install php72 --with-debug

这个时候你的其他扩展可能会报类似 版本不一致的错误:

PHP Warning: PHP Startup: igbinary: Unable to initialize module
Module compiled with build ID=API20170718,NTS
PHP compiled with build ID=API20170718,NTS,debug
These options need to match
in Unknown on line 0

Warning: PHP Startup: igbinary: Unable to initialize module
Module compiled with build ID=API20170718,NTS
PHP compiled with build ID=API20170718,NTS,debug

如果遇到以上问题 可以重新安装下扩展 加上-fs 强制从源码编译扩展,而不是下载二进制包,这样你的扩展也是debug版本的了 如下:

brew install php72-igbinary -fs

brew install php72-memcached -fs

关于扩展与php版本不一致错误,github上也有人遇到过同样问题https://github.com/Homebrew/homebrew-php/issues/1743

好了安装完之后 尽情的用gdb去调试吧,非degbug版本的追踪不到gdb信息, debug版本 如果有内存泄露也会给你提示。

eg:

gdb php //执行完 会进入gdb,php就是刚才编译的debug版本

set args test.php //在gdb 里面执行

b php_cli.c:660; //在php_cli.c文件660 行打断点

run //运行

i locals //查看当前断点处的变量值

如果你不是在mac下或者想编译 可以参考下面的文档
首先我们要安装debug版本的php

1 . 从github 下载php的源码,因为从github下载源码里面没有configure文件,所以需要执行以下命令

./buildconf

2.

brew install bison  //如果安装过 bison 可以调过,php 用bison做语法分析
echo 'export PATH="/usr/local/opt/bison/bin:$PATH"' >> ~/.zshrc

./configure --prefix=/usr/local/Cellar/php_debug --enable-debug

make
make install

 

php72编译过程中遇到了一写错误:

make: *** No rule to make target `/data/php-src/ext/opcache/Optimizer/escape_analysis.c’, needed by `ext/opcache/Optimizer/escape_analysis.lo’.  Stop.   网上没有答案 于是 求助,鸟哥回答如下:

错2:

Undefined symbols for architecture x86_64:
“_libiconv”, referenced from:
_php_iconv_string in iconv.o
__php_iconv_strlen in iconv.o
__php_iconv_substr in iconv.o
__php_iconv_strpos in iconv.o
__php_iconv_mime_encode in iconv.o
__php_iconv_appendl in iconv.o
_php_iconv_stream_filter_append_bucket in iconv.o

“_libiconv_close”, referenced from:
_php_iconv_string in iconv.o
__php_iconv_strlen in iconv.o
__php_iconv_substr in iconv.o
__php_iconv_strpos in iconv.o
__php_iconv_mime_encode in iconv.o
__php_iconv_mime_decode in iconv.o
_php_iconv_stream_filter_dtor in iconv.o

“_libiconv_open”, referenced from:
_php_iconv_string in iconv.o
__php_iconv_strlen in iconv.o
__php_iconv_substr in iconv.o
__php_iconv_strpos in iconv.o
__php_iconv_mime_encode in iconv.o
__php_iconv_mime_decode in iconv.o
_php_iconv_stream_filter_ctor in iconv.o

ld: symbol(s) not found for architecture x86_64
这个错误,弄了一下午没查到原因,后来一想是不是头文件找不到,因为我这个mac电脑 看了下/usr/include 没有这个目录

于是执行

xcode-select –install

再make 就不报错了,就好了,就好了,就好了,想吐血~~~~~ mac系统升级后移除了头文件目录,需要命令行执行下这个安装

2 thoughts on “mac 开发php扩展 环境准备,debug 编译php,gdb 调试php程序”

  1. 楼主问下,在gdb里run的是否有遇到过 warning: unhandled dyld version (15) 的情况吧,mac系统是10.12.5的

发表评论

电子邮件地址不会被公开。 必填项已用*标注