3

私は初めて、カバレッジ ツール gcov を使用して大規模なプロジェクトを分析しています。次のようなディレクトリ構造があります。

    HW
     -FooHW1.cpp
     -FooHW1.h
     -FooHW2.cpp
     -FooHW2.h
     -...
     -Makefile.am
    Lib1
     -FooLib1.cpp
     -FooLib1.h
     -FooLib2.cpp
     -FooLib2.h
     -...
     -Makefile.am

    Lib2
     ...
     -Makefile.am
    Lib3
     ...
     -Makefile.am
    Main
     -main.cpp
     -main.h
     -Makefile.am

各ディレクトリには、依存関係を生成するために automake を使用して生成された独自の Makefile があり、コンパイラが使用する場所はすべて c++ です。

私の目的はステートメント カバレッジの分析であるため、gcov を使用するために、次の行を各 Makefile.am に追加して .gcno および .gcda ファイルを生成しようとしました。

    AM_CXXFLAGS = -fprofile-arcs -ftest-coverage
    AM_LDFLAGS = -fprofile-arcs

残念ながら、コンパイルしてもいくつかの *.o が作成 (またはリンク) されず、gcov を呼び出すと、通常、次のエラーが表示されます。

    undefined __gcov_init

http://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html#index-coverage-536によると、上位の指示に従って、次のことも試してみました。

    AM_CXXFLAGS = --coverage
    AM_LDFLAGS = --coverage

しかし、それは私にとってはうまくいきません。

gcov ツールを使用し、大規模な C++ プロジェクトを扱うのはこれが初めての経験であることを明記したいと思います。助けてくれてありがとう。

4

2 に答える 2

0

http://bobah.net/d4d/tools/code-coverage-with-gcovおよび http://www.slideshare.net/maguschen/using-gcov-and-lcovは、gcov/lcov を使用するための優れたソースです (この本当に大きくて複雑なプロジェクトでlcovを使用することができました)

lcov は、カバレッジの結果を html 形式で表示する可能性を提供します (リストされたファイルやソース ファイルの行に対しても適切なパーセンテージ)。

ああ、それが動的カバレッジであることを理解していただければ幸いです。そのため、実際にプログラムを実行してカバレッジを取得する必要があります (ビルドは.gcnoファイルのみを作成する必要があります)。

于 2013-08-05T12:25:47.363 に答える