[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

6.1 gcov 入門

gcov はテストカバレージプログラムである。 GNU CC と一緒に使って解析することで、プログラムをより効率良く、高速に 実行できるようにするのを助ける。 gcov をプロファイリングツールとして使うことで、どの最適化策が もっとも影響があるかを発見する手助けとなる。 別のプロファイリングツール gprof と合わせて使うと、 プログラムのどの部分が最も計算時間を消費しているかを評価することができる。

プロファイリングツールは、プログラムの性能を解析する助けとなる。 gcovgprof のようなプロファイリングツールを 使うと、以下のような基本的な性能統計情報を得ることができる。

読者のコードがコンパイルされたときにどのように動作するかについての 上記の情報が一度分かってしまえば、各モジュールを見て、どのモジュールを 最適化すべきかを知ることができる。 gcov は、どこを最適化すれば良いかを決めるのを助ける。

ソフトウェアの開発者は、テストスイートと組み合わせてカバレージテストも 使って、ソフトウェアが実際にリリースできるほど充分良いものであるかどうかを 確認する。 テストスイートは、プログラムが期待どおりに動作するかどうかを検証できる。 カバレージプログラムは、そのプログラムのどれぐらいの部分がテストスイート により検査されたかを調べる。 そうすることで、開発者はどんな種類のテストケースをテストスイートに 追加する必要があるかを決めることができ、さらに良いテストと さらに良い最終的な製品を作り出すことが可能になる。

gcov を使う予定なら、読者のコードは最適化なしでコンパイルすべきである。 何故なら、最適化を行なうと、コードの幾つかの行を組み合わせて一つの機能に することがあり、コードが大量にコンピュータの計算時間を使っている場所である 「ホットスポット」を探すのに必要なだけの情報が得られないからである。 同様に、gcov は行毎に(最も細かい単位では)統計を累積するので、 一行には一個の文しか置かないプログラミングスタイルが最もうまくいく。 ループや他の制御構造に展開される、複雑なマクロを使っていると、 統計があまり役に立たなくなる。マクロの呼び出しが現れた行についてだけ 報告を行なうからである。 関数と同じように振る舞う複雑なマクロを使っているなら、 そのマクロをインライン関数に置き換えればこの問題は解決される。

gcov は、‘sourcefile.gcov’ という名前のログファイルを 作り、そのファイルは、ソースファイル ‘sourcefile.c’ の 各行が何回実行されたかを示す。 これらのログファイルを gprof と組み合わせると、プログラムの性能の 細かなチューニングを助けることができる。 gprof は、gcov から得られる情報と組み合わせて使うことの できる、時間に関する情報を与える。

gcov は、GNU CC でコンパイルしたコードにしか使えない。 他のプロファイリングやテストカバレージ機構とは互換性はない。


This document was generated using texi2html 1.78.