UbuntuによるPHPのデバッグでXdebug2のプロファイリングデータを使用するには
-
18-09-2019 - |
質問
私の質問はに基づいています この記事.
XDUBUG2によるPHPコードに関するプロファイリングデータを作成してから、KCachegrindのようなアプリに配置するにはどうすればよいですか?
ブラウザでのエラーメッセージを強調表示するため、UbuntuでXdebugを正常に使用しました。しかし、私は次のような端末ツールを見つけていません xdebug
.
このようなPHPコードの視覚的な見方をしたい
解決
この行をphp.iniに追加します
xdebug.profiler_enable = 1
次に、Webサーバーを介してPHPを実行した場合は、Webサーバーを再起動する必要があります。そうしないと、CONFの変更が取り上げられません。
CLIを介してPHPを実行している場合、もちろん再起動は必要ありません。
これで、PHPスクリプトを実行すると、cachegrind.out.pidファイルがxdebug.profiler_output_dir php.ini設定で指定されたディレクトリに作成されます。デフォルトでは /TMPです。
そのファイルは、KCachegrindがロードできるものです。
このプロファイル生成を呼び出す他の手段があります、あなたはそれらについてで読むことができます http://www.xdebug.org/docs/all_settings#profiler_enable
他のヒント
WebGrindを見てください(http://code.google.com/p/webgrind/)
私は、テストする視覚環境ではなく、端末にのみアクセスできるような状況に遭遇しました。さらに悪いことに、私はWindows MachineとPuttyを使用していました。
利用可能なソリューションは次のとおりです
- WebGrindのインストール(http://code.google.com/p/webgrind/)
- XDebugを実行し、Cachegrind.OutファイルをCachegrind Viewerを持っているマシンにコピーします。
私にとって答えは、私のローカルWindowsマシンにCachegrindファイルをSCPすることであり、WinCachegrindを使用してそれらを見ることでした。 Linuxボックスにscpして、ファイルでkcachegrindを実行できます。これの欠点は、同じファイル構造がない可能性があるため、Sourcodeを表示できないことです。地元のマシンにもソースがある場合、またはそこに入手できる場合は、これも修正できます。 VIM(または他のエディター)のCachegrindファイルを開き、グローバル検索を行い、パスを交換して、ローカルマシンの正しいソースパスに変更します。
これがあなたが探していたものであることを願っています。
コメントに対処するために編集:
やや異なるcallgrindファイルを取得するために作業している場合。このためには、Linuxで実行している必要があります(あなたはそう思います)、CallGrindおよびValgrindプログラムを利用できるようにする必要があります。ここで最後に想定することは、他の方法ではなく、Apache modとしてPHPを実行していることです。 Apacheの開始に対してCallGrindツールを使用してから、ブラウザでリクエストを実行します。これにより、PHPコールツリーだけでなく、トラブルを引き起こしている可能性のあるApacheの多くのことについても詳細な情報が得られます。
これがの例です
sudo callgrind --dump-instr=yes --trace-jump=yes -v /usr/sbin/httpd -X
-Xは、1つのスレッドのみでデバッグモードでApacheを開始します。ここからWebブラウザを開き、必要なPHPスクリプトを押します。その後、戻ってApacheをシャットダウンします。これにより、CallGrind Parseも終了するはずです。
ApacheやWebブラウザが必要ない場合は、PHPコマンドだけでCallGrindを実行してみてください
sudo callgrind --dump-instr=yes --trace-jump=yes -v /usr/sbin/php my_php_script.php
それはあなたに同じ結果を与えるはずですが、すべてのアパッチのものはありません。