摘要:有時候,使用的第三方擴展之后,可能會發生一些錯誤,這個時候,可能就需要更底層的方式追蹤調試程序發生錯誤的地方和原因,熟悉下編程的肯定不陌生首先,使用命令,查看系統是否會生成文件返回結果可能是當返回結果為時,說明系統不會生成文件,這個時候
有時候,使用PHP的第三方擴展之后,可能會發生一些錯誤,這個時候,可能就需要更底層的方式追蹤調試程序發生錯誤的地方和原因,熟悉linux下C編程的肯定不陌生gdb
首先,使用ulimit -c命令,查看系統是否會生成 core文件
sh#返回結果可能是0 ulimit -c
當返回結果為0時,說明系統不會生成core文件,這個時候使用ulimit -c命令改變系統的默認設置
shulimit -c unlimited #或者 ulimit -c n #n大于0的數字
這樣當程序運行錯的時候,就會把運行過程記錄到core文件里面
一般來說,core文件會在程序運行目錄下生成,文件名類似 core.5740
下面開始使用gdb來調試
sh 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之獲取基本信息
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/30244.html
摘要:但執行后沒有任何信息輸出,這時候通過什么方法能知道程序錯在哪里這里可以將解決問題能力分為個等級,越到后面的表示能力越強。這個考驗全部通過,表明此程序員已經具備了專業程序員應該有的解決問題能力了。 這個話題老生長談了,在面試中必然考核的能力中,我個人認為解決問題能力是排第一位的,比學習能力優先級更高。解決問題的能力既能看出程序員的思維能力,應變能力,探索能力等,又可以看出他的經驗。如果解...
摘要:來自的擴展使用開發,可以很容易的使用進行調試。運行返回實際就是在函數名前面添加,然后進行調試第一步運行然后運行終端提示輸入輸入此時會回顯然后輸入顯示其中文件的內容為可以看到,函數源代碼已經出來了,可以使用常用的命令進行調試了。 來自:http://www.codefrom.com/paper/%E4%BD%BF%E7%94%A8gdb%E8%B0%83%E8%AF%95p... ...
摘要:要看到具體的函數就需要用擴展或者用調試,高級點還可以用。就是要跟蹤的進程。原理眾所周知,是用寫的,而各種函數調用的信息都會用語言的來表示,所以只要兩步就能拿到堆棧信息讀取進程的內存在內存里找到函數調用堆棧信息第一步可以通過或實現。 生產環境多多少少會遇到CPU占用很高或者卡住的PHP進程,這時怎樣才能知道這個進程在干啥呢? 一個方法是strace跟蹤系統調用和參數,這樣能大概知道PHP...
摘要:關于結構體內存對齊是什么,請參考源碼學習內存管理筆記。這說明在當前情況下,字符串結構中的柔性數組的起始位置并不受是否加關鍵字而影響,是緊跟在結構體后面的,所以節省內存這個說法并不成立。 baiyan 全部視頻:https://segmentfault.com/a/11... 今天我們正式進入redis5源碼的學習。redis是一個由C語言編寫、基于內存、單進程、可持久化的Key-Va...
摘要:本文首發于作者基于中的在中,的作用是將一個一維數組的值轉化為字符串。為了能通過修改代碼來看效果,將函數復制到擴展文件中,并將其命名為源碼內容省略在擴展中新增一個擴展函數因為擴展的編譯以及引入前面的已經提及。 本文首發于 https://github.com/suhanyujie...* 作者:suhanyujie 基于 PHP 7.3.3 PHP 中的 implode 在 PH...
閱讀 3580·2021-11-18 13:20
閱讀 2732·2021-10-15 09:40
閱讀 1750·2021-10-11 10:58
閱讀 2119·2021-09-27 13:36
閱讀 2592·2021-09-07 10:06
閱讀 1853·2021-08-11 11:21
閱讀 1430·2019-08-29 17:04
閱讀 2085·2019-08-29 14:06