C言語によるソフトウェアを開発するときに、gcovを使用するとソフトウェアの品質を向上させることができます。 gcovは、 テストカバレッジプログラムです。 GNU CCとともに使用してプログラムの分析を行えば、 より効率的 かつ高速に動作するコードを生成することができます。 また、プロファイリング・ツールとして使用することができ、別のプロファイリングツールであるgprofと共に使用して、 コードのどの部分が最も多く計算時間を消費しているかなど、次の基本的なパフォーマンスの統計値を知ることができます。
- 各コード行が実行される頻度
- 実際に実行されるコード行
- コードの各セクションが消費する計算時間
ここでは、Eclipse(eclipseバージョン:Juno Service Release 2)上で、ツールチェーンがMinGW GCCにより、C言語を開発するときのgcovの使い方を説明します。
Eclipse用gcovプラグインの設定
次のURLからEclipse用のgcovプラグインをダウンロードします。「ginkgo 0.2.2 (日付: 2008-08-09) 」が最新版でした。
http://sourceforge.jp/projects/ginkgo/
解凍すると、featuresのフォルダにはorg.ginko.gcov.feature_0.2.2、pluginsフォルダにはorg.ginkgo.gcov_0.2.2.jarのファイルがあるので、それぞれeclipse.exeと同じフォルダにあるfeaturesとpluginに、解凍したフォルダとファイルをコピーする。
gcovを使用するためのEclipse上でのコンパイル
Eclipseを起動し、gcovで解析するC言語のソースコードを作成します。次のようになります。
void main(void) とコードを書くと、「warning: return type of ‘main’ is not ‘int’」のワーニングが出ます。昔はこれでよかったのですが、今は、ISOの規格では戻り値はintになっています。
Eclipseに設定したgcov pluginを有効にするために、[プロジェクトエクスプローラ]からカバレッジを出したいプロジェクトを右クリックして「プロパティ」を選択し、「C Coverage」の「Activate nature」を有効にする。
コンパイルするときは次のパラメータを設定するため、上記と同じ操作でプロパティを表示させ、「C/C++ビルド」の「設定」で「ツール設定」タブを表示させ、「GCC C Compiler」の「その他」で設定します。
-fprofile-arcs -ftest-coverage
リンクするときは、次のパラメータを設定するため、同様にプロパティを表示させ、「C/C++ビルド」の「設定」で「ツール設定」タブを表示させ、「GCC C Linker」の「その他」で設定します。
-fprofile-arcs
コンパイルが完了すると、Debugフォルダにgcovtest.gcnoファイルが作成されます。
gcovによるカバレッジデータの作成
作成したプログラムを実行すると、Debugフォルダにgcovtest.gcdaファイルが作成されます。このファイルをダブルクリックするとダイアログが表示され、「Show Coverage details for “gcovtest.c” only」をチェックして、OKボタンを押し、カバレッジデータの作成を指示します。
実行した回数を含むトレースしたgcovにより作成されたカバレッジデータが、次のように表示されます。
表示されたダイアログで、「show coverage for the whole selected binary file」をチェックしても、次のようにすべてゼロで表示されます。これはプラグインのどうも不具合のようです。
(参考URL:https://www.eclipse.org/forums/index.php/t/286377/)
[responsive][/responsive]