0

Linuxシステムでgprofが正常に動作しています。サンプルと呼び出し回数の情報を取得しています。そこで、いくつかの関数に属性((hot)) を追加しました。現在、それらは gprof サンプル出力から消えており、ホットでない関数のみが「サンプリング」されています。ホット関数は引き続き呼び出しカウント情報に表示されます。これを修正するにはどうすればよいですか?

2 つのうちの 1 つが起こったと思われます。gprof は、関連するアドレスと思われるものをフィルター処理し、ホット関数は .text.hot セクションにあるため、この範囲外になります。または、どういうわけか、ホット関数のデバッグ データに混乱が生じているため、gprof はそれらを無視しています。

4

1 に答える 1

1

attribute((hot))また、少なくとも同じソース ファイル内で、関数がインライン化される可能性が高くなります。関数のインライン化されていないバージョンが (おそらく別のモジュールから) 呼び出された場合にのみ、呼び出し回数が増加します。プロファイラーは呼び出しサイトしか認識していないため、関数はサンプルには表示されません。

呼び出し回数を確認することで、これが発生したかどうかを検出できるはずです。ではるかに低い場合はattribute((hot))、インライン化が原因です。

于 2013-08-14T10:25:26.947 に答える