3

できればUbuntuリポジトリから。

4

5 に答える 5

3

他の人はOProfileに言及しました; 最新のLinuxインストールでのフルシステム統計プロファイリングの場合、それは確かに揺るぎないものです。

より由緒あるツール(カーネルサポートを必要としないため、古いバージョンのLinuxまたはLinux以外のオペレーティングシステムでも動作します)は、 binutilsに含まれているGNU gprofです(したがって、開発環境にすでにインストールされていることは間違いありません)。

を使用するには、 ;の引数を指定しgprofてアプリケーションをコンパイルするだけです。プログラムの終了後にと呼ばれるファイルが作成され、このファイルの分析に使用できます。-pggccgmon.outgprof

于 2009-02-03T01:57:53.150 に答える
2

簡単ですが効果的な手法は、GDB の下でプログラムを実行し、SIGINT シグナルを処理することです。プログラムの実行中に、control-c などを入力して手動で SIGINT を生成し、停止中にコール スタックを記録します。プログラムが主観的に遅くなるまで、これを 10 回または 20 回のように何度も実行します。これにより、時間がどこに行くかについての非常に良いアイデアが得られます。

この方法では正確なタイミングは得られませんが、呼び出し命令を含め、最も時間がかかる命令を正確に特定できます。

Linux で実行されている C++ コードをプロファイリングするにはどうすればよいですか?

于 2009-02-16T20:02:04.770 に答える
1

Sysprofは、OProfile に似た優れたプロファイラーです (gtk GUI も備えています)。これは Ubuntu リポジトリで入手できます。これはカーネル レベルのプロファイラーであり、gprof とは異なりカーネル モジュールを必要としますが、gprof とは異なり、マルチスレッド アプリケーションをプロファイリングできます。

于 2009-02-03T06:11:51.983 に答える
0

OProfileがあります。使い方はそれほど難しくありませんが、ややバグがあります。

于 2009-02-03T00:59:52.597 に答える
0

Ubuntuリポジトリでも利用できるoprofile(http://oprofile.sourceforge.net/news/ )で成功しました。再コンパイルの必要はなく、共有オブジェクトなどの制限もありません。

于 2009-02-03T01:00:06.370 に答える