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

little bottle
發布: 2023-04-06 11:32:02
轉載
4297 人瀏覽過

假設線上有一段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中文網其他相關文章!

相關標籤:
php
來源:cnblogs.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板