gdb調試PHP擴展錯誤


有時候,使用PHP的第三方擴展之后,可能會發生一些錯誤,這個時候,可能就需要更底層的方式追蹤調試程序發生錯誤的地方和原因,熟悉linux下C編程的肯定不陌生gdb

首先,使用ulimit -c命令,查看系統是否會生成 core文件。

#返回結果可能是0
ulimit -c 

當返回結果為0時,說明系統不會生成core文件,這個時候使用ulimit -c命令改變系統的默認設置

ulimit -c unlimited
#或者 
ulimit -c n  #n大於0的數字

這樣當程序運行錯的時候,就會把運行過程記錄到core文件里面

一般來說,core文件會在程序運行目錄下生成,文件名類似 core.5740
下面開始使用gdb來調試

gdb php -c core.5740
#進入之后顯示很多東西,然后不停的 按 輸入 bt回車,查看執行流程
#在gdb運行環境中,使用PHP的gdb調試腳本,其中/prefix/php-src-dir 是php的源碼目錄
source /prefix/php-src-dir/.gdbinit
#zbacktrace會更加精確到PHP的錯誤
zbacktrace

詳細的使用gdb調試PHP的文章,可以參考鳥哥的博客
如何調試PHP的Core之獲取基本信息
轉自:https://segmentfault.com/a/1190000002703073

在開發過程中,用命令行執行php文件時,報 Segmentation fault,於是到網上求救,大家都說生成一個core文件,查看一下。
什么是core文件啊,我不知道啊。
后來才知道 用gdb調試php時,會把錯誤原因放到core中。
我這是突然報錯誤,無法運行php,經過查找錯誤原因,定位到了xdebug的問題,是因為昨天安裝了xdebug,導致今天無法執行php .
我把本機的xdebug卸載了后,就可以了。贊~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM