php擴充套件出現段錯誤怎麼辦

2020-07-16 10:06:21

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中文網

以上就是php擴充套件出現段錯誤怎麼辦的詳細內容,更多請關注TW511.COM其它相關文章!