ホームページ  >  記事  >  バックエンド開発  >  Gdb デバッグ php は現在実行中のコードを簡単に見つけます

Gdb デバッグ php は現在実行中のコードを簡単に見つけます

little bottle
little bottle転載
2019-04-25 17:52:044228ブラウズ

オンラインに 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 サイトの他の関連記事を参照してください。

声明:
この記事はcnblogs.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
前の記事:PHP PCRE定期分析次の記事:PHP PCRE定期分析