开发的 PHP 扩展出现段错误怎么处理?
我用科大讯飞的 SDK 做的 php 扩展,是通过调用讯飞的提供的动态库来实现功能的,但是有个问题比较奇怪,当扩展以模块的方式加载到 php 里面后,运行扩展时常会出现段错误,我检查了很多遍,感觉应该不是我代码的问题,因为当我把调用讯飞动态库接口的代码注释掉就不会出现段错误; 而当我把扩展和 php 源代码一起编译安装后,再运行就不会有段错误。
本想通过查看 coredump 的文件查看原因,但是发现打印出的调用栈全是问号,我的 php 编译是打开了 debug 模式的,所以基本可以确定是动态库里出现了段错误,但是另一种情况是我单独编译讯飞的 SDK 运行是没问题的,不会出现段错误,所以感觉可能是动态库和 php 兼容的问题,具体什么原因就不得而知了,因为他们不开源,也没办法调试。
说了这么多,我只是不明白为什么以模块的方式运行偶尔会出现段错误,而和 php 核心代码一块编译安装就不会出现问题,目前对 php 的内部实现原理还不太了解,希望有大牛帮忙解惑
推荐文章: