摘要:一開啟查看是否開啟輸出打開文件記錄關(guān)閉文件記錄設(shè)置內(nèi)核出來的存放路徑注意目錄要有權(quán)限給寫二調(diào)試準(zhǔn)備文件獲取地址保存在服務(wù)器上,例如備用。
一、開啟 查看是否開啟 core dump 輸出
ulimit -a
打開 core dump 文件記錄ulimit -c unlimited
yum install gdb php-dbg
關(guān)閉 core dump 文件記錄ulimit -c 0
設(shè)置內(nèi)核core dump出來的存放路徑(注意目錄要有權(quán)限給php寫):
echo "/tmp/core.%e.%p.%t" > /proc/sys/kernel/core_pattern
獲取地址:https://github.com/php/php-src/blob/master/.gdbinit
保存在服務(wù)器上,例如 /root/.gdbinit 備用。
gdb php-fpm -c core-php-fpm.920
可以看到類似下邊的字樣:
Core was generated by `php-fpm: pool www ". Program terminated with signal 11, Segmentation fault.3、查看 core 發(fā)生時(shí)刻的堆棧
(gdb) bt #0 zend_mm_alloc_small (size=4、引入 PHP 源代碼中提供的 .gdbinit (gdb 命令編寫腳本)) at /usr/src/debug/php-7.0.6/Zend/zend_alloc.c:1295 #1 zend_mm_alloc_heap (size= ) at /usr/src/debug/php-7.0.6/Zend/zend_alloc.c:1366 #2 _emalloc (size= ) at /usr/src/debug/php-7.0.6/Zend/zend_alloc.c:2450 #3 0x00007f7a6fad0511 in apm_sprintf (fmt=0x7f7a6faeff50 " %04d-%02d-%02d %02d:%02d:%02d Version %s Process %d received signal %2d: %s , bss[%p] ") at /PHP/64/source/php7.0.0_nzts/ext/apm/apm_common.c:371 #4 0x00007f7a6facbefd in print_backtrace (sig=11) at /PHP/64/source/php7.0.0_nzts/ext/apm/apm.c:1937 #5 0x00007f7a6facbfd7 in agent_fatal_signal_handler (sig=11) at /PHP/64/source/php7.0.0_nzts/ext/apm/apm.c:1955 #6 #7 zend_mm_alloc_small (size= ) at /usr/src/debug/php-7.0.6/Zend/zend_alloc.c:1295 #8 zend_mm_alloc_heap (size= ) at /usr/src/debug/php-7.0.6/Zend/zend_alloc.c:1366
(gdb) source /root/.gdbinit5、查看 backtrace 和變量值
(gdb) zbacktrace [0x7f7a75e138c0] C("DEBUG") /usr/share/nginx/html/smartphp/common.php:28 [0x7f7a75e137d0] Model->_connectDb() /usr/share/nginx/html/smartphp/core/Model.class.php:44 [0x7f7a75e13680] Model->bindData("SELECT40tips40FROM40keyword_phone40WHERE40word=:word", array(1)[0x7f7a75e136f0], "getdata") /usr/share/nginx/html/smartphp/core/Model.class.php:143 [0x7f7a75e13580] Model->getData("SELECT40tips40FROM40keyword_phone40WHERE40word=:word", array(1)[0x7f7a75e135f0]) /usr/share/nginx/html/smartphp/core/Model.class.php:215 [0x7f7a75e134c0] Model->getField("SELECT40tips40FROM40keyword_phone40WHERE40word=:word", array(1)[0x7f7a75e13530]) /usr/share/nginx/html/appdata/smartphp/core/Model.class.php:264
(gdb) print ((zval *)0x7f7a75e13530) $1 = (zval *) 0x7f7a75e13530 (gdb) printzv $1 [0x7f7a75e13530] (refcount=3) array: Packed(1)[0x7f7a75e94888]: { [0] 0 => [0x7f7a75e6ad88] (refcount=4) string: PP紅包。 }
https://bugs.php.net/bugs-generating-backtrace.php
http://www.laruence.com/2011/06/23/2057.html
https://kn007.net/topics/php-fpm-how-to-core-dump/
http://www.laruence.com/2011/12/06/2381.html
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/21585.html
摘要:有時(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編程的肯定...
摘要:但執(zhí)行后沒有任何信息輸出,這時(shí)候通過什么方法能知道程序錯(cuò)在哪里這里可以將解決問題能力分為個(gè)等級,越到后面的表示能力越強(qiáng)。這個(gè)考驗(yàn)全部通過,表明此程序員已經(jīng)具備了專業(yè)程序員應(yīng)該有的解決問題能力了。 這個(gè)話題老生長談了,在面試中必然考核的能力中,我個(gè)人認(rèn)為解決問題能力是排第一位的,比學(xué)習(xí)能力優(yōu)先級更高。解決問題的能力既能看出程序員的思維能力,應(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... ...
閱讀 875·2021-10-11 10:59
閱讀 2810·2019-08-30 15:43
閱讀 2141·2019-08-30 11:08
閱讀 1659·2019-08-29 15:20
閱讀 1025·2019-08-29 13:53
閱讀 498·2019-08-26 13:24
閱讀 1647·2019-08-26 13:24
閱讀 2831·2019-08-26 12:08