0

私の質問はこの記事に基づいています。

Xdubug2 で PHP コードに関するプロファイリング データを作成し、それを KCacheGrind のようなアプリに配置するにはどうすればよいでしょうか?

ブラウザでエラーメッセージが強調表示されるため、UbuntuでXdebugを正常に使用できました。ただし、のような端末ツールは見つかりませんでしxdebugた。

PHPコードをこのように視覚的に表示したい

代替テキスト

4

3 に答える 3

4

この行を php.ini に追加します

xdebug.profiler_enable = 1

次に、Web サーバーを介して PHP を実行した場合は、Web サーバーを再起動する必要があります。そうしないと、conf の変更が反映されません。

cli を使用して PHP を実行している場合は、もちろん再起動は必要ありません。

これで、PHP スクリプトを実行すると、xdebug.profiler_output_dir php.ini 設定で指定されたディレクトリに cachegrind.out.PID ファイルが作成されます。デフォルトでは /tmp です。

そのファイルは、kcachegrind がロードできるファイルです。

このプロファイル生成を呼び出す方法は他にもあります。それらについてはhttp://www.xdebug.org/docs/all_settings#profiler_enableで読むことができます。

于 2009-08-19T18:35:09.367 に答える
3

WebGrind を見てみましょう ( http://code.google.com/p/webgrind/ )

于 2009-08-18T20:06:12.640 に答える
1

端末にしかアクセスできず、テストする視覚的な環境にアクセスできないという同様の状況に遭遇しました。さらに悪いことに、私は Windows マシンと Putty を使用していました。

利用可能なソリューションは、

  1. WebGrind のインストール ( http://code.google.com/p/webgrind/ )
  2. Xdebug を実行し、cachegrind ビューアーがあるマシンに cachegrind.out ファイルをコピーします。

私にとっての答えは、cachegrind ファイルをローカルの Windows マシンに SCP し、WinCachegrind を使用してそれらを調べることでした。それらをLinuxボックスにSCPし、ファイルに対してKCacheGrindを実行できます。これの欠点は、同じファイル構造を持っていない可能性があるため、ソースコードを表示できないことです。ソースがローカル マシンにもある場合、またはそこにある場合は、これも修正できます。vim (または他のエディター) で cachegrind ファイルを開き、パスをグローバル検索して置換し、ローカル マシン上の正しいソース パスに変更します。

これがあなたが探していたものであることを願っています。

コメントに対処するために編集:

多少異なる callgrind ファイルを取得しようとしている場合。このためには、Linux で実行している必要があり (そうであると思います)、callgrind および valgrind プログラムを使用できるようにする必要があります。ここで最後に想定することは、PHP を Apache mod として実行していて、他の方法で実行していないということです。Apache の起動に対して callgrind ツールを使用し、ブラウザでリクエストを実行します。これにより、php 呼び出しツリーだけでなく、問題を引き起こしている可能性のある Apache の多くの事柄に関する詳細な情報が得られます。

ここにの例があります

sudo callgrind --dump-instr=yes --trace-jump=yes -v /usr/sbin/httpd -X

-X は、1 つのスレッドのみでデバッグ モードで apache を起動します。ここから Web ブラウザーを開き、必要な php スクリプトをヒットします。次に、戻ってapacheをシャットダウンします。これにより、callgrind 解析も終了するはずです。

Apache や Web ブラウザが不要な場合は、php コマンドだけで callgrind を実行してみてください。

sudo callgrind --dump-instr=yes --trace-jump=yes -v /usr/sbin/php my_php_script.php

それはあなたに同じ結果を与えるはずですが、すべてのApacheのものはありません.

于 2009-08-19T00:22:36.087 に答える