4

gcovとlcovを使用してカバレッジレポートを生成したいと思います。

私が今までやったこと:-

1. I compiled my code using --fprofile-arcs and -fprofile-coverage in
g++.

2. I have linked using lcov.

3. I have .gcno files with th e.o location.

4. When I execute binary, it is resulting into .gcda files.

私がしなければならないこと:-

これらのデータファイル(.gcda)を使用する必要があり、lcovを使用してクリーンなレポートを作成したいと思います。

問題:-

ソースファイルが存在する複数のディレクトリがあり、各ディレクトリ内にオブジェクトファイルを保持するためのobj/ARCHディレクトリを作成しています。

したがって、最終的なディレクトリ構造は次のようになります。

  proto  ----> MJ1 ----> MJ2 ----> MJ3 ----> MJ4 ----> MJ5

  MJ1 ----> .cpp 

      ----> obj/linux/*.o *.gcno *.gcda 

  MJ2 ----> .cpp 

      ----> obj/linux/*.o *.gcno *.gcda 

M3、M4、M5と同じです。

プロトレベルからlcovを実行していますが、.gcdaファイルは検出されますが、.hおよび.Cファイルの検出でエラーが発生します。このプロセスパスを独立させる方法はありますか?

Error:-
../MjUtil/glob.h:cannot open source file
../MjUtil/MJError.h:cannot open source file
../MjUtil/OsStatisticsFile.h:cannot open source file

前もって感謝します。

4

3 に答える 3

1

--base-directory .オプションを lcov に指定してみましたか?

于 2014-09-03T11:34:12.773 に答える
0

通常、CPP をコンパイルするときに絶対パスを試すことをお勧めします。

また、lcov を実行するディレクトリに依存するべきではありません。例えば:

lcov -c -d ../../../src -o lcov.info

そして src dir には以下が含まれます:

main.cpp main.gcno main.gcda

main.gcnoファイルがmain.cppへの相対パスで構成されている場合でも、lcov が処理します。

また、gcda/gcno ファイルが移動されていないことを確認する必要があります。スクリプトまたは手動で。それらが移動されている場合、もちろん相対パスは正しくなく、lcov はソースを見つけることができません。

于 2014-09-26T14:17:01.723 に答える