2011-01-30 10 views
8

私はubuntu 10.1、g ++コンパイラを使用しています。C++ gcovとlcovの問題を使用していますか?

私の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/! 

私はlcovのドキュメントを読んで、すべてのウェブ上で検索し、私は答えを見つける傾けます。誰でも私を助けることができますか?

また、私もmain.gcdaファイルを開くことができませんでした(テキストエディタを使用して開こうとしましたが、文字エンコーディングの問題があります:UTF-8、Western(ISO-8859-1)、Western 。

私は認める、その私のミス(私はひどく:(ISO-8859-11)など、まだカント開いて、ファイルを読み込む

が私を助けてください...誰もが

EDITを??します申し訳ありません、 "home/Projects/Game1"の資本 "P") パスを確認した後、私はこの新しいエラーを受け取りました:

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

ディレクトリ名の綴りが正しいことを確認し、コードとオブジェクトを含むことを約束しますか?そのディレクトリで 'lcov --directory 'として実行しようとしましたか? – Cascabel

+0

私は私の質問を編集しました、あなたは正しいです:私のばかな "不注意"。しかし、新しいエラーメッセージも私を打ち負かす:geninfo:ERROR:/home/Projects/Game1/main.gcno:ファイルの予期しない終わりに達した –

+1

私はまったく同じエラーがあります。最後に運がありましたか? – PierreBdR

答えて

12

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

lcovで作業している間、私は絶対パスの代わりに相対パスを使用して優れていることが分かりました。 lcovを使用して、最初のゼロカバレッジの日付を-i、 - 最初のスイッチで取り込もうとすることができます。

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

Finalyのlcovを使用すると、HTML形式のレポートを生成することができます:

ここ

は、あなたのプログラム を実行し、カバレッジデータをキャプチャするとzerocounters

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

を達成するための私の方法の一例です

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

ご希望の場合は、こちらをご覧ください。

-3

使用してコードをコンパイルします。そして、

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

HTMLページを作るために、次を使用しています。

genhtml app.info 
+2

-1 'lcov'はコードをコンパイルせず、' genhmtml'は 'genhtml'でなければなりません。 – Kleist

2

私はまったく同じ問題を抱えていました。また、カバレッジテストを実行している間にライブラリコードが変更された場合、混乱することがあります。それを脱出する唯一の方法は、エラーの原因となったファイルを削除して再コンパイルすることです。

+0

これも私の問題を解決しました。ありがとうございました。 – Meysam

関連する問題