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
ログイン後にコピー

Debugging

source /usr/local/src/php-7.2.9/.gdbinit
zbacktrace
ログイン後にコピー

この時点で、test.phpの11行目のsleep関数がプロセスをスリープさせていることが分かりました。

関連チュートリアル: PHP ビデオ チュートリアル

以上がGdb デバッグ php は現在実行中のコードを簡単に見つけますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
php
ソース:cnblogs.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート