32

オプション.gcdaで構築された共有ライブラリにリンクされた実行可能ファイルを実行することにより、gcovデータファイル(ファイル)を生成することは可能ですか?--coverage

基本的に、1つの共有ライブラリにコンパイルされた複数のc ++ファイルで構成されるメインライブラリと、メインライブラリにリンクしてテストするテストプログラムを含む「test」というサブディレクトリがあります。すべてが正常にコンパイルされ、.gcnoファイルはライブラリソースファイルとテストソースファイルの両方に対して生成されます。これらの.gcdaファイルはテストソースファイル用にのみ作成されていますが、共有ライブラリにコンパイルされる実際のソースファイル用に本当に必要です。

何か案は?

追加情報:

  • それはすべてC++コードです
  • すべてがautomakeによって生成されたmakeスクリプトで構築されています
  • --coverageオプションは、共有ライブラリMakefile.amのlib_la_CPPFLAGSおよびlib_la_LDFLAGSに指定されています。
  • --coverageオプションは、テスト実行可能ファイルMakefile.amのAM_CPPFLAGSおよびAM_LDFLAGSに指定されています。
  • テストソースファイルは、Google Test(C ++ユニットテストフレームワーク)を利用します
4

1 に答える 1

33

私はついにgccの人たちから助けを得て、この問題を解決しました。こちらのスレッドを参照してください:http://gcc.gnu.org/ml/gcc-help/2010-09/msg00130.html

共有ライブラリ(.so)ファイルがあった場所であるため、.gcdaファイルが.libsディレクトリに配置されていたことがわかりました。gcovに出力を生成させるには、.gcdaファイルをソースファイルがあった場所まで1レベル上に移動する必要がありました。

また、他の誰かが同じ問題のいくつかに遭遇した同様のスレッドがあります:gcovは共有オブジェクトを処理できますか?

于 2010-09-20T20:01:48.210 に答える