Eclipce+CDT+(gcov or gprof)

Eclipse+CDTのgccコンパイル設定に『-pg』オプションを使用するためのチェックがあるので、それをONにしてmakeするとリンク時に『undefined reference to _mcount』というエラーが出る。

Eclipse+CDTは不親切で、リンク時には『-pg』オプションを付けてくれないようだ。なので、リンクオプションで『-pg』を別で設定してあげなければならない。リンク設定にはチェックボックスがないので、自分でタイピングするほかない。

これは、coverage(カバレッジ)を測定するときに使用する『-fprofile-arcs -ftest-coverage』オプションでも同じ。

Eclipse+CDT+CUnit

原因は調べていないけど。。。
make Ver3.8.0じゃないとビルドが通らない(Ver3.8.1じゃだめ)
gdb-20041228じゃないとデバッガが動いてくれない(gdb-20060706じゃだめ)

環境のバージョンは何だったっけか

方法は簡単。以下のようにするだけ。




file:test.c
#include <stdio.h>

void hoge(int i){
if(0 == i){
printf("i = 0\n");
}else{
printf("i != 0\n");
}
}
int main(void){
hoge(0);
return(0);
}


上記test.cをコンパイルして実行ファイルを生成する。
$gcc -Wall -pedantic -fprofile-arcs -ftest-coverage test.c -o test.exe

生成した実行ファイルを実行することによりデータファイルが自動的に作られる。
$./test.exe

データファイルからカバレッジ情報(-bオプションで分岐情報も出力)を生成する。
$ gcov -b test.c
File `test.c'
Lines executed:85.71% of 7
Branches executed:100.00% of 2
Taken at least once:50.00% of 2
Calls executed:75.00% of 4
test.c:creating `test.c.gcov'




        -:    0:Source:test.c
-: 0:Graph:test.gcno
-: 0:Data:test.gcda
-: 0:Runs:1
-: 0:Programs:1
-: 1:#include
<stdio.h>
-: 2:
function hoge called 1 returned 100% blocks executed 80%
1: 3:void hoge(int i){
1: 4: if(0 == i){
branch 0 taken 100% (fallthrough)
branch 1 taken 0%
1: 5: printf("i = 0\n");
call 0 returned 100%
-: 6: }else{
#####: 7: printf("i != 0\n");
call 0 never executed
-: 8: }
-: 9:}
function main called 1 returned 100% blocks executed 100%
1: 10:int main(void){
call 0 returned 100%
1: 11: hoge(0);
call 0 returned 100%
1: 12: return(0);
-: 13:}



次に分岐を一つ増やしてみる。




file:test.c
#include <stdio.h>

void hoge(int i){
if(0 == i){
printf("i = 0\n");
}else if(1 == i){
printf("i = 1\n");
}else{
printf("i != 0\n");
}
}
int main(void){
hoge(0);
return(0);
}


前と同じようにコマンドを実行する。
$gcc -Wall -pedantic -fprofile-arcs -ftest-coverage test.c -o test.exe
$./test.exe
$ gcov -b test.c
File `test.c'
Lines executed:66.67% of 9
Branches executed:50.00% of 4
Taken at least once:25.00% of 4
Calls executed:60.00% of 5
test.c:creating `test.c.gcov'




        -:    0:Source:test.c
-: 0:Graph:test.gcno
-: 0:Data:test.gcda
-: 0:Runs:1
-: 0:Programs:1
-: 1:#include
<stdio.h>
-: 2:
function hoge called 1 returned 100% blocks executed 50%
1: 3:void hoge(int i){
1: 4: if(0 == i){
branch 0 taken 100% (fallthrough)
branch 1 taken 0%
1: 5: printf("i = 0\n");
call 0 returned 100%
#####: 6: }else if(1 == i){
branch 0 never executed
branch 1 never executed
#####: 7: printf("i = 1\n");
call 0 never executed
-: 8: }else{
#####: 9: printf("i != 0\n");
call 0 never executed
-: 10: }
-: 11:}
function main called 1 returned 100% blocks executed 100%
1: 12:int main(void){
call 0 returned 100%
1: 13: hoge(0);
call 0 returned 100%
1: 14: return(0);
-: 15:}


左側の数字が実行ファイルを実行した時の通過回数。#####は通過していない行。

嫁さんが欲しかったというチャーリーとチョコレート工場の舞台である、WONKAのチョコレートを先日手に入れて、今日いよいよ食べる時がやってきた。チョコレートはサイコロ状に手で割れるようになっているタイプで、一つ一つはWONKAさんの帽子を模った形をしていた。味はミルクチョコレート?で中に入っている(少量の)キャラメルがとろーりとしてて意外においしかった。少しだけサクッとする食感があったのだけれども、これは多分、キャラメルの固まった箇所だろう。

ちなにみ、チャーリーがジョニーディップかと思っていたら、チャーリーは子供の事で、WONKAさんがジョニデだよって嫁さんに教えてもらった。映画を見てないから知りませんでした。

今日やったこと

--------------------------------------------------------------------------------
*1・・・ようやく読み終えた。あと二回くらいは読まないと本代の元は取れない気がする。最終章は難しかったので感想は書けない。。。自分が説得しないといけない相手が苦手ならば、その相手が苦手としている人を使え!くらい。

雨 + 強風 + 傘 = 道路に捨てられた傘

今日の帰りは雨のため合羽を着て帰ったわけだけども、傘差し運転の学生が危ないのなんのって。向かいから走ってくるのが分かっているのに横並びのままだもんなぁー。なんで俺がぎりぎりまで避けなければならないのだろうかと怒りが込み上げてくる。

あと、道路に捨てられた傘の多さ。10Km走って帰る間に3つも哀れなビニール傘の死骸を発見。恐らくは強風で壊された傘をそのまま道路にぽいしたと思われる。道路は燃えないもの用のゴミ箱じゃないっつーの。

今日やったこと

  • プロジェクト反省会ために実績データを纏めて課長に提出。
嫁さんと嫁さんのお母さんからチョコレートをゲット。あと、食堂の人からも。。。
嫁さんのは手作りのフォンダンショコラ。外側ふっくらの中はとろーり。まぁまぁ。

今日で最後のびっくりドンキー

社内ミーティングのある日は恒例のびっくりドンキーでランチ。今日はちょっと接客に腹がたった。
お店に入ると店の兄ちゃんがおじいちゃん相手に会計中。とりあえず来たぞ!ってアイコンタクトをとってから立って待っていたのだけれども、おじいちゃんが領収書!なんて言うもんだから、待合席に座って待つことにした。会計も終わったので兄ちゃんが席に案内してくれるかなぁーと思ったら、なんと無視しやがった。一分立っても案内しないもんだから、別のウエイトレスを自分から呼んで案内してもらうハメに。腹がたったので二度といくもんか。


今日やったこと

今日乗ったバスでは運転手の新人教育中だったみたいで、先生がチクチクチクチクつっこんでたなぁ。○○バス亭です。このバスはお釣りが出ません。とか本人が話している最中に注意したって頭にはいるわけねーだろっての。

--------------------------------------------------------------------------------
*1・・・開発終盤になると、バグの難易度が上がってたらい回しになるって書いてあったけど確かにそのとおりだな。難易度が上がるから進捗率も上がらないわけか。トリアージとウォーチームという単語は初めて聞いたな。どちらともあぁーこの事か!と思う事ではあったけど、自分が実施していることではなかった。トリアージがバグを見極めて優先度や深刻度、はたまた修正要否を決めて担当者にまわしたりすることで、ウォーチームが開発終盤に大きな権限を与えられてトリアージするチームのこと。開発終盤で『これは修正しない』なんて決めているのがウォーチームって事。あ、マイクロソフトではって事ね。

タイトルそのまんまだけども、妊娠中はくしゃみをすると失禁する事があるらしい。
私が頑張って腹筋している最中に横で『はくしょーん』->『おしっこがちょっと出た』なんて言われたら笑わずにはいられない。この時って腹筋にすごく力が入って余計鍛えられているような気がするんです。