您好,登錄后才能下訂單哦!
如何解決php擴展出現段錯誤的問題?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
php出現段錯誤的解決辦法:首先查看“ulimit -a”;然后設置“ulimit -c unlimited”不限制core文件大小;接著使用gdb運行程序和段錯誤記錄的文件;最后指定core文件大小即可。
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 <core文件上限> 設定core文件的最大值,單位為區塊。
-d <數據節區大小> 程序數據節區的最大值,單位為KB。
-f <文件大小> shell所能建立的最大文件,單位為區塊。
-H 設定資源的硬性限制,也就是管理員所設下的限制。
-m <內存大小> 指定可使用內存的上限,單位為KB。
-n <文件數目> 指定同一時間最多可開啟的文件數。
-p <緩沖區大小> 指定管道緩沖區的大小,單位512字節。
-s <堆疊大小> 指定堆疊的上限,單位為KB。
-S 設定資源的彈性限制。
-t <CPU時間> 指定CPU使用時間的上限,單位為秒。
-u <程序數目> 用戶最多可開啟的程序數目。
-v <虛擬內存大小> 指定可使用的虛擬內存上限,單位為KB。
看完上述內容,你們掌握如何解決php擴展出現段錯誤的問題的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。