8

私はubuntu10.1、g++コンパイラを使用しています。

C++プロジェクトにgcovとlcovを使用しようとしています。私はなんとかgcovをコンパイルすることができます:

g++ -fprofile-arcs -ftest-coverage main.cpp user.cpp game.cpp

エラーや警告メッセージはありません。次に、gcovを実行してみます。

gcov main.cpp user.cpp game.cpp

また大丈夫です。私も自分のプログラムを実行しようとします:

./a.out

gcovを再度実行すると、メイン、ユーザー、およびgame.cppに一定の割合が表示されます。データをキャプチャしたいので、ターミナルに次のように入力します。

lcov --directory /home/projects/Game1/ -c -o application.info

しかし、それは私にこれを与えます:

Capturing coverage data from /home/projects/Game1/
geninfo: ERROR: cannot read /home/projects/Game1/!

Web全体を検索し、lcovのドキュメントを読みましたが、答えが見つかりません。誰でも私を助けることができますか?

さらに、main.gcdaファイルも開くことができませんでした(テキストエディタを使用して開いてみましたが、文字エンコードの問題がかなりあります:UTF-8、Western(ISO-8859-1)、Western(ISO-8859) -11)などですが、ファイルを開いて読み取ることはできません。

助けてください..誰か??

編集:

私の間違いは認めます(「home / Projects / Game1」の大文字は「P」です。)パスを確認した後、次の新しいエラーが発生しました。

geninfo: ERROR: /home/Projects/Game1/main.gcno: reached unexpected end of file
4

3 に答える 3

14

-gフラグ (デバッグ情報)を必ず含めてください。-g -fprofile-arcs -ftest-coverage

lcovを使用しているときに、相対パスではなく絶対パスを使用する方がよいことがわかりました。lcov を使用して、-i、--initial スイッチを使用して最初のゼロ カバレッジ日付をキャプチャすることができます。

これは、ゼロカウンターを達成する私の方法の例です

$ lcov --zerocounters --directory myFullPath
$ lcov --capture --initial --directory myFullPath --output-file myOutputFile

次に、プログラムを実行して、カバレッジ データを取得します。

$ lcov --no-checksum --directory myFullPath --capture --output-file myOutputFile

最後に、lcov を使用すると、html レポートを生成できます。

$ lcov/genhtml --highlight --legend --output-directory myOutPutHTMLdirectory myOutputFile

これがお役に立てば幸いです。

于 2011-02-01T10:48:14.933 に答える
-5

以下を使用してコードをコンパイルします。

lcov --directory . --output-file app.info

次に、次を使用して html ページを作成します。

genhtml app.info
于 2012-06-29T06:51:31.507 に答える