段错误 php,php扩展出现段错误怎么办
php出現(xiàn)段錯誤的解決辦法:首先查看“ulimit -a”;然后設(shè)置“ulimit -c unlimited”不限制core文件大小;接著使用gdb運行程序和段錯誤記錄的文件;最后指定core文件大小即可。
Linux下的C程序常常會因為內(nèi)存訪問錯誤等原因造成segment fault(段錯誤)此時如果系統(tǒng)core dump功能是打開的,那么將會有內(nèi)存映像轉(zhuǎn)儲到硬盤上來,之后可以用gdb對core文件進行分析,還原系統(tǒng)發(fā)生段錯誤時刻的堆棧情況。這對于我們發(fā)現(xiàn)程序bug很有幫助。
使用ulimit -a可以查看系統(tǒng)core文件的大小限制;使用ulimit -c [kbytes]可以設(shè)置系統(tǒng)允許生成的core文件大小。
ulimit -c 0 不產(chǎn)生core文件
ulimit -c 100 設(shè)置core文件最大為100k
ulimit -c unlimited 不限制core文件大小
步驟:
1、當(dāng)發(fā)生段錯誤時,我們查看ulimit -a (core file size (blocks, -c) 0)并沒有文件,
2、設(shè)置 :ulimit -c unlimited 不限制core文件大小
3、運行程序 ,發(fā)生段錯誤時會自動記錄在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、會提哪行有錯。
很多系統(tǒng)默認的core文件大小都是0,我們可以通過在shell的啟動腳本/etc/bashrc或者~/.bashrc等地方來加入 ulimit -c 命令來指定core文件大小,從而確保core文件能夠生成。
除此之外,還可以在/proc/sys/kernel/core_pattern里設(shè)置core文件的文件名模板,詳情請看core的官方man手冊。
相關(guān)介紹:
Linux ulimit命令用于控制shell程序的資源。
ulimit為shell內(nèi)建指令,可用來控制shell執(zhí)行程序的資源。
語法ulimit [-aHS][-c ][-d ][-f ][-m ][-n ][-p ][-s ][-t ][-u ][-v ]
參數(shù):
-a 顯示目前資源限制的設(shè)定。
-c 設(shè)定core文件的最大值,單位為區(qū)塊。
-d 程序數(shù)據(jù)節(jié)區(qū)的最大值,單位為KB。
-f shell所能建立的最大文件,單位為區(qū)塊。
-H 設(shè)定資源的硬性限制,也就是管理員所設(shè)下的限制。
-m 指定可使用內(nèi)存的上限,單位為KB。
-n 指定同一時間最多可開啟的文件數(shù)。
-p 指定管道緩沖區(qū)的大小,單位512字節(jié)。
-s 指定堆疊的上限,單位為KB。
-S 設(shè)定資源的彈性限制。
-t 指定CPU使用時間的上限,單位為秒。
-u 用戶最多可開啟的程序數(shù)目。
-v 指定可使用的虛擬內(nèi)存上限,單位為KB。
更多相關(guān)知識,請訪問PHP中文網(wǎng)!
總結(jié)
以上是生活随笔為你收集整理的段错误 php,php扩展出现段错误怎么办的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php显示表格,php – 显示所有表格
- 下一篇: 动态规划算法php,php算法学习之动态