ホスト アプリケーションがあり、プラグインを作成しました。プラグインを共有オブジェクト (foo.so など) にコンパイルすると、ホスト アプリケーションは dlopen 経由でそれをロードします。この場合、私のホスト アプリケーションは llvm の opt ツールです (ただし、それは質問にとって重要ではないと思います)。
プロファイリングを有効にしてプラグインをコンパイルしたい (つまりg++ -pg
、gprof
)。ただし、これを行うと、プロファイル出力ファイル gmon.out が作成されません。gprof は誰かがセットアップ ルーチンなどを呼び出すことを期待しているのかもしれません。
さまざまな理由から、ホスト アプリを -pg で再コンパイルすることは避けたいと考えています。ホスト アプリケーション opt をプロファイリングせずに、共有オブジェクト foo.so をプロファイリングできるかどうか興味があります。
他のプロファイリング ツールも調べました。HP の qprof はこの状況を処理できるはずですが、共有オブジェクト内の関数の名前を解決できません (非常に素朴な方法で addr2line にフォールバックします)。
ありがとう、ニック