できればUbuntuリポジトリから。
5 に答える
他の人はOProfileに言及しました; 最新のLinuxインストールでのフルシステム統計プロファイリングの場合、それは確かに揺るぎないものです。
より由緒あるツール(カーネルサポートを必要としないため、古いバージョンのLinuxまたはLinux以外のオペレーティングシステムでも動作します)は、 binutilsに含まれているGNU gprofです(したがって、開発環境にすでにインストールされていることは間違いありません)。
を使用するには、 ;の引数を指定しgprof
てアプリケーションをコンパイルするだけです。プログラムの終了後にと呼ばれるファイルが作成され、このファイルの分析に使用できます。-pg
gcc
gmon.out
gprof
簡単ですが効果的な手法は、GDB の下でプログラムを実行し、SIGINT シグナルを処理することです。プログラムの実行中に、control-c などを入力して手動で SIGINT を生成し、停止中にコール スタックを記録します。プログラムが主観的に遅くなるまで、これを 10 回または 20 回のように何度も実行します。これにより、時間がどこに行くかについての非常に良いアイデアが得られます。
この方法では正確なタイミングは得られませんが、呼び出し命令を含め、最も時間がかかる命令を正確に特定できます。
Sysprofは、OProfile に似た優れたプロファイラーです (gtk GUI も備えています)。これは Ubuntu リポジトリで入手できます。これはカーネル レベルのプロファイラーであり、gprof とは異なりカーネル モジュールを必要としますが、gprof とは異なり、マルチスレッド アプリケーションをプロファイリングできます。
OProfileがあります。使い方はそれほど難しくありませんが、ややバグがあります。
Ubuntuリポジトリでも利用できるoprofile(http://oprofile.sourceforge.net/news/ )で成功しました。再コンパイルの必要はなく、共有オブジェクトなどの制限もありません。