摘要:有時(shí)候,使用的第三方擴(kuò)展之后,可能會(huì)發(fā)生一些錯(cuò)誤,這個(gè)時(shí)候,可能就需要更底層的方式追蹤調(diào)試程序發(fā)生錯(cuò)誤的地方和原因,熟悉下編程的肯定不陌生首先,使用命令,查看系統(tǒng)是否會(huì)生成文件返回結(jié)果可能是當(dāng)返回結(jié)果為時(shí),說明系統(tǒng)不會(huì)生成文件,這個(gè)時(shí)候
有時(shí)候,使用PHP的第三方擴(kuò)展之后,可能會(huì)發(fā)生一些錯(cuò)誤,這個(gè)時(shí)候,可能就需要更底層的方式追蹤調(diào)試程序發(fā)生錯(cuò)誤的地方和原因,熟悉linux下C編程的肯定不陌生gdb
首先,使用ulimit -c命令,查看系統(tǒng)是否會(huì)生成 core文件
sh#返回結(jié)果可能是0 ulimit -c
當(dāng)返回結(jié)果為0時(shí),說明系統(tǒng)不會(huì)生成core文件,這個(gè)時(shí)候使用ulimit -c命令改變系統(tǒng)的默認(rèn)設(shè)置
shulimit -c unlimited #或者 ulimit -c n #n大于0的數(shù)字
這樣當(dāng)程序運(yùn)行錯(cuò)的時(shí)候,就會(huì)把運(yùn)行過程記錄到core文件里面
一般來說,core文件會(huì)在程序運(yùn)行目錄下生成,文件名類似 core.5740
下面開始使用gdb來調(diào)試
sh gdb php -c core.5740 #進(jìn)入之后顯示很多東西,然后不停的 按 輸入 bt回車,查看執(zhí)行流程 #在gdb運(yùn)行環(huán)境中,使用PHP的gdb調(diào)試腳本,其中/prefix/php-src-dir 是php的源碼目錄 source /prefix/php-src-dir/.gdbinit #zbacktrace會(huì)更加精確到PHP的錯(cuò)誤 zbacktrace
詳細(xì)的使用gdb調(diào)試PHP的文章,可以參考鳥哥的博客
如何調(diào)試PHP的Core之獲取基本信息
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/30244.html
摘要:但執(zhí)行后沒有任何信息輸出,這時(shí)候通過什么方法能知道程序錯(cuò)在哪里這里可以將解決問題能力分為個(gè)等級(jí),越到后面的表示能力越強(qiáng)。這個(gè)考驗(yàn)全部通過,表明此程序員已經(jīng)具備了專業(yè)程序員應(yīng)該有的解決問題能力了。 這個(gè)話題老生長(zhǎng)談了,在面試中必然考核的能力中,我個(gè)人認(rèn)為解決問題能力是排第一位的,比學(xué)習(xí)能力優(yōu)先級(jí)更高。解決問題的能力既能看出程序員的思維能力,應(yīng)變能力,探索能力等,又可以看出他的經(jīng)驗(yàn)。如果解...
摘要:來自的擴(kuò)展使用開發(fā),可以很容易的使用進(jìn)行調(diào)試。運(yùn)行返回實(shí)際就是在函數(shù)名前面添加,然后進(jìn)行調(diào)試第一步運(yùn)行然后運(yùn)行終端提示輸入輸入此時(shí)會(huì)回顯然后輸入顯示其中文件的內(nèi)容為可以看到,函數(shù)源代碼已經(jīng)出來了,可以使用常用的命令進(jìn)行調(diào)試了。 來自:http://www.codefrom.com/paper/%E4%BD%BF%E7%94%A8gdb%E8%B0%83%E8%AF%95p... ...
摘要:要看到具體的函數(shù)就需要用擴(kuò)展或者用調(diào)試,高級(jí)點(diǎn)還可以用。就是要跟蹤的進(jìn)程。原理眾所周知,是用寫的,而各種函數(shù)調(diào)用的信息都會(huì)用語言的來表示,所以只要兩步就能拿到堆棧信息讀取進(jìn)程的內(nèi)存在內(nèi)存里找到函數(shù)調(diào)用堆棧信息第一步可以通過或?qū)崿F(xiàn)。 生產(chǎn)環(huán)境多多少少會(huì)遇到CPU占用很高或者卡住的PHP進(jìn)程,這時(shí)怎樣才能知道這個(gè)進(jìn)程在干啥呢? 一個(gè)方法是strace跟蹤系統(tǒng)調(diào)用和參數(shù),這樣能大概知道PHP...
摘要:關(guān)于結(jié)構(gòu)體內(nèi)存對(duì)齊是什么,請(qǐng)參考源碼學(xué)習(xí)內(nèi)存管理筆記。這說明在當(dāng)前情況下,字符串結(jié)構(gòu)中的柔性數(shù)組的起始位置并不受是否加關(guān)鍵字而影響,是緊跟在結(jié)構(gòu)體后面的,所以節(jié)省內(nèi)存這個(gè)說法并不成立。 baiyan 全部視頻:https://segmentfault.com/a/11... 今天我們正式進(jìn)入redis5源碼的學(xué)習(xí)。redis是一個(gè)由C語言編寫、基于內(nèi)存、單進(jìn)程、可持久化的Key-Va...
摘要:本文首發(fā)于作者基于中的在中,的作用是將一個(gè)一維數(shù)組的值轉(zhuǎn)化為字符串。為了能通過修改代碼來看效果,將函數(shù)復(fù)制到擴(kuò)展文件中,并將其命名為源碼內(nèi)容省略在擴(kuò)展中新增一個(gè)擴(kuò)展函數(shù)因?yàn)閿U(kuò)展的編譯以及引入前面的已經(jīng)提及。 本文首發(fā)于 https://github.com/suhanyujie...* 作者:suhanyujie 基于 PHP 7.3.3 PHP 中的 implode 在 PH...
閱讀 3844·2021-11-18 13:20
閱讀 2881·2021-10-15 09:40
閱讀 2028·2021-10-11 10:58
閱讀 2282·2021-09-27 13:36
閱讀 2768·2021-09-07 10:06
閱讀 2018·2021-08-11 11:21
閱讀 1502·2019-08-29 17:04
閱讀 2237·2019-08-29 14:06