首頁  >  文章  >  後端開發  >  gdb調試php輕鬆找到目前執行的程式碼

gdb調試php輕鬆找到目前執行的程式碼

little bottle
little bottle轉載
2019-04-25 17:52:044304瀏覽

假設線上有一段php腳本,突然在某天出問題了,不處理但是進程沒有退出。這種情況可能是異常休眠或是有段死循環程式碼,但是我們要怎麼定位呢,我們這個時候最想知道的應該是這個腳本在此刻在做什麼吧。這個是gdb zbacktrace就有用了。

先隨便寫一個測試腳本test.php,裡面就寫一個sleep函數,換成死迴圈也可以。

<?phpfunction Mecho($i){ echo $i.PHP_EOL;
}$i = 20;while($i>0){if($i%2==0){
  Mecho($i);
}sleep(100000);$i--;
}

zbacktrace下載php原始碼包裡面就有,目前我的環境是新裝的,目前的php版本是php7.2.9

直接cli執行test.php

php test.php

 接著找到目前php行程

   

# 然後用gdb調試

gdb -p 56571

 調試

source /usr/local/src/php-7.2.9/.gdbinit
zbacktrace

 這個時候就知道了是在test.php的11行sleep函數所導致的進程sleep。

相關教學:PHP影片教學 

#

以上是gdb調試php輕鬆找到目前執行的程式碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:cnblogs.com。如有侵權,請聯絡admin@php.cn刪除