3

gprof、またはなどのプロファイリング機能を備えた C/C++ ライブラリを探していcallgrindます。

callgrindより正確には、KCacheGrind などのサードパーティ ツールに渡すために、その出力が発行されるものと同等であることを望みます。

アイデアは、このライブラリに基づいてアスペクトを設計し、それを私のチームで開発しているいくつかのアプリケーションにプラグインできるようにすることです.

4

1 に答える 1

3

gperftoolsCPU プロファイラーは、または典型的な動的リンクを使用して、任意の実行可能ファイルにアタッチできます。callgrind 互換の形式でデータを出力できます。LD_PRELOAD

実行可能ファイルのプロファイルを作成したいとしますa.out。でリンクすることから始め-lprofilerます。その後、CPUPROFILEenvで実行します。プロファイリング データが保存されるファイルの名前を指す変数。callgrind 形式のデータは、 を使用して取得できますpprof

CPUPROFILE=a.out.prof ./a.out
pprof --callgrind a.out a.out.prof

興味深いのは、CPUPROFILEundefined を使用すると、実行可能ファイルが正常に動作するという事実です。その結果、このプロファイラーは、アプリケーションを再コンパイルまたは再リンクすることなく、簡単に有効にすることができます。

なんらかの理由で実行可能ファイルのリンク方法を変更できない場合でもLD_PRELOAD、次のように定義することでプロファイリングできます。

LD_PRELOAD=/path/to/libprofiler.so CPUPROFILE=a.out.prof ./a.out
于 2012-12-18T15:31:52.487 に答える