想学习下 core dump 的东西,看了 Laruence 的博客:
http://www.laruence.com/2011/06/23/2057.html
脚本
function recurse($num) {
recurse(++$num);
}
recurse(0);
但我现在 PHP 如果内存限制了就出现如下报错:
PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 130968 bytes)
如果把内存改成不限制,这个脚本会一直吃内存,不会爆栈。
请问,如何设置才能 segment fault?
操作系统:Mac OS 10.11.1
1
lijinma OP - . - 求助。
|
2
msxcms 2016-04-22 10:42:45 +08:00 1
因为这个是 PHP 的 Bug ,你找个有这个 Bug 的版本就行了
|
3
kn007 2016-04-22 10:44:19 +08:00 via Android
拿 php7 配置 igbinary7 就可以了
|
4
shiny 2016-04-22 10:47:15 +08:00
前几天就遇到过,可惜很难重现
|
5
kn007 2016-04-22 10:49:25 +08:00 via Android
等你 core dump ,鸟哥会告诉你被内存跑花了,要用 valgrind 。。。
以下鸟哥发给我的: 或者这么说吧, 我要用 valgrind 跑, 看看有没有什么信息可以获取 |
8
kn007 2016-04-22 10:53:46 +08:00 via Android
https://kn007.net/topics/php7-baffling-problem/
看了下, igbinary7 还没更新,你可以 try it https://github.com/igbinary/igbinary7/issues/3 |
9
kn007 2016-04-22 10:55:28 +08:00 via Android
@lijinma 可以的,但是环境复杂,应用复杂的话,通过 segmentfault 的 core dump 看不出问题在哪。
鸟哥的意思就是说你最好有段简短的测试代码才行。 coredump 才有意义。但最终还是用 valgrind 好定位问题。 |
14
kn007 2016-04-22 11:14:02 +08:00 via Android
@lijinma 没留意你非要用这个脚本来实现 segmentfault 。
php7 可以用上面那个获得 segmentfault |
16
kn007 2016-04-22 11:16:04 +08:00 via Android
Jan 06 2011 PHP5.3.5 & PHP5.2.17
Mar 17 2011 PHP5.3.6 Aug 18 2011 PHP5.3.7 Aug 23 2011 PHP5.3.8 你可以编一个 5.3.5 试试 |
19
kn007 2016-04-22 11:38:45 +08:00 via Android 1
不 debug 貌似也可以,但是看不到错误
|