2

別のアプリケーションで dlopen() を使用して開かれる C++ ライブラリ (.so) があります。しかし、gcov を使用してアプリケーション内で実行している間に、このライブラリのコード カバレッジを見つける必要があります。出来ますか?はいの場合、どのように行うことができますか?

そうでない場合、問題はどのように解決できますか?

4

2 に答える 2

0

まず、C++ ライブラリを--coverageフラグ付きでコンパイルしましたか? これまで gcov で '.so' ライブラリを実際に使用したことがないため、いずれにしても機能するかどうかはわかりません。

次に、アプリケーションのテスト バージョンを を使用せずdlopen()に、ライブラリの静的ライブラリ (.a) バージョンにリンクし、通常の呼び出しを行うように調整できますか?

于 2011-06-19T21:43:28.813 に答える
0

はい。によってロードされた共有ライブラリのカバレッジをdlopen生成できます。

1) 共有ライブラリをフラグ付きでコンパイルする-fprofile-arcs -ftest-coverage

dlopen2)フラグを使用するプログラムをコンパイルする-fprofile-arc -ftest-coverage

.info3)ファイルを生成する lcov

lcov --capture --rc lcov_branch_coverage=1 --directory path/to/.gcda --output-file coverage.info 

4) html を生成する

genhtml coverage.info --branch-coverage --output-directory out 
于 2019-10-31T05:22:47.073 に答える