首页 >后端开发 >PHP问题 >php扩展出现段错误怎么办

php扩展出现段错误怎么办

藏色散人
藏色散人原创
2020-07-11 09:24:423103浏览

php出现段错误的解决办法:首先查看“ulimit -a”;然后设置“ulimit -c unlimited”不限制core文件大小;接着使用gdb运行程序和段错误记录的文件;最后指定core文件大小即可。

php扩展出现段错误怎么办

Linux下的C程序常常会因为内存访问错误等原因造成segment fault(段错误)此时如果系统core dump功能是打开的,那么将会有内存映像转储到硬盘上来,之后可以用gdb对core文件进行分析,还原系统发生段错误时刻的堆栈情况。这对于我们发现程序bug很有帮助。

使用ulimit -a可以查看系统core文件的大小限制;使用ulimit -c [kbytes]可以设置系统允许生成的core文件大小。

ulimit -c 0 不产生core文件

ulimit -c 100 设置core文件最大为100k

ulimit -c unlimited 不限制core文件大小

步骤:

1、当发生段错误时,我们查看ulimit -a (core file size (blocks, -c) 0)并没有文件,

2、设置 :ulimit -c unlimited 不限制core文件大小

3、运行程序 ,发生段错误时会自动记录在core中 (php -f WorkWithArray.php)

4、ls -al core.* 在那个文件下(-rw------- 1 leconte leconte 139264 01-06 22:3 1 core.2065)

5、使用gdb 运行程序和段错误记录的文件。(gdb ./test core.2065)

6、会提哪行有错。

很多系统默认的core文件大小都是0,我们可以通过在shell的启动脚本/etc/bashrc或者~/.bashrc等地方来加入 ulimit -c 命令来指定core文件大小,从而确保core文件能够生成。

除此之外,还可以在/proc/sys/kernel/core_pattern里设置core文件的文件名模板,详情请看core的官方man手册。

相关介绍:

Linux ulimit命令用于控制shell程序的资源。

ulimit为shell内建指令,可用来控制shell执行程序的资源。

语法

ulimit [-aHS][-c <core文件上限>][-d <数据节区大小>][-f <文件大小>][-m <内存大小>][-n <文件数目>][-p <缓冲区大小>][-s <堆叠大小>][-t <CPU时间>][-u <程序数目>][-v <虚拟内存大小>]

参数:

-a  显示目前资源限制的设定。

-c c21ed03d22942eeb7bc172c7752d6fa6  设定core文件的最大值,单位为区块。

-d 77fdb7fcf74bcbbc124511bb6b4a90fd  程序数据节区的最大值,单位为KB。

-f f753ff873dfee4f9a109c91d1257ea0d  shell所能建立的最大文件,单位为区块。

-H  设定资源的硬性限制,也就是管理员所设下的限制。

-m 83e1061f0acfb84fa13c0ac47d84247a  指定可使用内存的上限,单位为KB。

-n eff5f25b40155e24e1327c9784c95ebb  指定同一时间最多可开启的文件数。

-p 3d31a9198ac4151a99e626fc6f77157a  指定管道缓冲区的大小,单位512字节。

-s 7864c721a28911f72e2bb8e26cd88681  指定堆叠的上限,单位为KB。

-S  设定资源的弹性限制。

-t eddf136485ddc3fb2937017549dbff9d  指定CPU使用时间的上限,单位为秒。

-u d02d591c4be819f55c47c3ef870b112b  用户最多可开启的程序数目。

-v d967a09828dfd642cafa676f9ed70156  指定可使用的虚拟内存上限,单位为KB。

更多相关知识,请访问PHP中文网

以上是php扩展出现段错误怎么办的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn