MinaTech

innocent at every scene

eclipse+CDT+cygwin+カバレッジ+プロファイラ 覚え書き

カバレッジやプロファイルをやりたかったので、GCCでトライできないかと情報収集。
備忘録としてメモっておく。先人たちの情報に感謝。
1. Cygwinインストール
何が必要なのかよく分からないのでとりあえず全部。インストール後、c:/cygwin/bin/ にパスを通す。
2. Cygwin日本語化
■日本語入力を可能にする。
~/.inputrcを見たら # Allow 8-bit input/output なんて項目が用意されていたのでそこを有効にする。
■lsで日本語を表示できるようにする。
alias ls=’ls –show-control-chars –color -F’
~/.bashrcに↑を記述しておけばOK
■viでの日本語表示
viを起動して「:set encoding=japan」と入力。設定ファイル「.vimrc」に書いておくとイチイチ入力しなくてOK。「:version」と入力すれば、設定ファイルがどこにあるか表示される。
参考:
Cygwin 日本語化 + α
教えて!Watch
uenox HomePage Cygwin 日本語化
3. eclipse + CDTインストール
Pleiades All in Oneという日本語ディストリビューションがあるので利用させてもらう。C/C++用にいろいろなpluginがひとまとめになっている。不要なpluginを入れすぎて混乱することもないので、初心者には非常にありがたい。
4. eclipseで新規プロジェクト作成
[ファイル]→[新規]→[Cプロジェクト]。Toolchainに「Cygwin GCC」が表示されていることを確認。1.でインストールしたGCCを勝手に見つけてくれている。ありがたや、ありがたや。
プロジェクトタイプは「実行可能」を選ぶ。間違えて「staticライブラリー」を選択してしまい実行できなくてパニクった。orz
5. ソース・ルックアップ・パスの設定
GDBでデバッグを開始すると「Can’t find a source file at “/cygdrive/c/project/hoge/hoge.cpp”」なんて怒られる。Cygwinのパスをeclipseが認識できていない様子。この場合は、ルックアップ・パスの設定が必要。
eclipseのメニュー[ウィンドウ]→[設定]で設定ダイアログを開き、[C/C++]→[デバッグ]→[共通・ソース・ルックアップ・パス]にルックアップ設定を追加する。[コンパイル・パス]に「/cygdrive/c/」、[ローカル・ファイル・システム・パス]に「c:/」を指定する。
参考:
MSN相談箱
6. カバレッジ
GCCと組み合わせて使えるカバレッジツールgcovの出力結果をeclipseで表示できるようにしたプラグインCDT gcov plugin。gconvは1.で入ったらしい。
コンパイラとリンカにカバレッジ用のオプション「-fprofile-arcs -ftest-coverage」を追加。gconvの出力をHTML形式に変換するlcovなるツールもあるらしい。Cygwin上で動いているっぽいが、起動オプションに何を渡せばよいのかイマイチ分からず。一旦、断念する。
7. プロファイラ
eclipseでプロジェクトのプロパティを設定。[C/C++ビルド]→[設定]の[ツール設定]タブ、[Cygwin C コンパイラー]→[デバッグ]の「gprof情報の生成」にチェック、同じく[Cygwin C リンカー]→[その他]のリンカー・フラグに「-pg」を指定する。
ビルド→実行すると、プロジェクトのフォルダにgmon.outが出力される。Cygwinでプロジェクトフォルダに移動し、
gprof ./デバッグ/Test.exe gmon.out -p
カバレッジ用のコードが影響を及ぼすので、6.で指定したオプション等は解除しておく。
参考:
GNU profiler
gccのためのプロファイ
エンジニアのポケット
ψ(プサイ)の興味関心空間
8. その他
eclipse デバッグ構成での出力先を「デバッグ」から「Debug」に変えた。ビルドはできるのだが、デバッグ開始時に「ntdll!RtlUnhandledExceptionFilter」というエラーがでるようになってしまった。どこかに設定しなければならない項目がある模様。とりあえず元に戻す。

コメントを残す

メールアドレスが公開されることはありません。

*