daily affairs
クルマと、読んだ本のネタを中心に。
 



※ C/C++言語の知識が必要になります。

一昨日の土曜日、ソフトウェアに紛れ込んだバグを調べていました。
いろいろ調べても原因が良くわかりません。
'true'で初期化しているフィールドが、どこかで'false'になっているようなバグです。
これは、スタック壊してる?メモリを爆撃してる?? とイヤ~な予感がし始めていた頃…

ソースコードを眺めていました。こんなコードです。
if( !flag ) ;
  throw SomeException ;

ん~、やっぱりflagが'false'になってるから例外が飛ぶんだよなぁx?

あ"っ!!!!
if( !flag ) ; ← コレなに?!
  throw SomeException ;

金曜日の夜にバタバタ修正した箇所でした。。集中して仕事しなきゃ~

コメント ( 10 ) | Trackback ( 0 )



« 会話 組込みソフト... »
 
コメント
 
 
 
・・・くっくっくっく (梅成弟子丸)
2006-07-03 13:39:02
これだとコンパイルエラーになりませんからねぇ(^^;



私の場合は・・・。

Visual Basicのソースをいじった直後にCのソースコードをいじって、switch~caseをselect~caseと書きました。

当然コンパイルエラーですが、VBの直後だったので何でエラーなのか分からず、30分ぐらい悩みました
 
 
 
スタイル (miya)
2006-07-03 13:50:40
人ごとだと、これは面白いよね~

我が身に降りかかってくると、つまんね~と思ったことでしょう。 (^^;



私なら、{}を必ず書きます。それもBSDスタイルで。(↓の左)

if (~) { if (~)

... {

} ...

}



あと、構造エディタを使えば、この手のヒューマンエラーは発見しやすいでしょうね。

 
 
 
え~ん (;_;) (miya)
2006-07-03 13:52:37
崩れた~





if (~) {

...

}



if (~)

{

...

}

 
 
 
笑いましたよ、あたしゃ(^^; (ubar)
2006-07-03 13:57:19
もう笑うしかありませんでしたから…orz



梅成さん、

そうなんですよ~

コンパイルエラーにならないんですよねぇ (T-T

意味の無いセンテンスですよ~くらいのワーニング出してくれたって良さそうなんですが(--;

たしかにif文の中に処理文そのものを書くこともできますけどね…

> VBの直後だった

VBはすっかり忘れて、selectってなんだっけ?って感じです(^^;





miyaさん、

> つまんね~と思ったことでしょう。 (^^;

それはもう。。

苦笑いしながら、コンパイルして、動かしたら動いて、もう笑うしかありません(^^;



私も一行であっても{}つけて、BSDスタイル(ってんですかね?)で書くのが趣味なんですが、チームのデファクト(?)が違うんですよ~(泣
 
 
 
bsdスタイル (miya)
2006-07-03 15:51:24
初期のbsd版unixのカーネルがそういうスタイルで書かれていたので、そう言われてます。

Cの最初のマニュアル本 The C programming language (K&R;白本)もこれで書かれていたので、このスタイルの愛用者は多いです。但し、私のように昔の人かな。(^^;



最近では、if ()の一行下に{を書く事も多いでしょう。

編集はし易いのですけど、ubarさんの遭遇したような誤りも発生し易いですね。



人間はこういう間違いを簡単にするから、やはりコーディングスタイルを強制する、何らかの構造エディタを義務づけないといかんでしょうね~。

 
 
 
(^^; (ubar)
2006-07-03 18:45:01
> に昔の人かな。(^^;



私も古いかも (^^;



コーディングスタイルは強制してもらった方がいいですね~

チームで開発する場合は特に。

ある程度でも形式がそろってないと、お互いが書いたコードが分かりにくくて仕方ありません(^^;



ところで、構造エディタってなんなんでしょう(^^;;
 
 
 
構造エディタ (miya)
2006-07-03 21:13:32
まず、エディタ=テキストエディタです。

エディタが言語構造を知っていて、インデントを行ったり、括弧などの補完を行ったり、キーワードをボードルドや色を付けたりできます。

これを構造エディタと言います。



既存のソースを読み込んだ時に、リフォーマットを行えれば、つまらないバグやコーディングミスをある程度防げますし、同じスタイルでコーディングできます。



eclipseなどのIDEエディタが構造エディタ機能を持っていると思います。

汎用だと、emacsのc-modeなどが有名です。

 
 
 
ありがとうございます m(__)m (ubar)
2006-07-03 21:19:37
いつもありがとうございます m(__)m



一時、indentコマンドを使って整形していたのですが、なぜかすぐに使われなくなりました(汗;



ちなみに、普段はeclipse+CDT使ってます (^^;

emacsのc-modeも2年くらい前までは使ってましたね~

Windowsで軽快に動くemacsがあれば使いたいんですけど…
 
 
 
Meadowってのがありますよ (sgur)
2006-07-04 18:42:53
使ってる人でーす(emacs on windows)。



Windows上ではMeadowっちゅうのがあります(http://www.meadowy.org/meadow/)

最近ではNetinstallっていう(http://www.meadowy.org/meadow/netinstall)、必要なパッケージを自動でダウンロードしてきてくれるツールも登場して、(昔に比べて)とっても使いやすくなってます。
 
 
 
すっかり見落としてました(^^; (ubar)
2006-07-05 23:28:13
コメントが遅くなってすいません m(__)m



meadowは何年か前に使ってました~

微妙にemacsと違うのが受け付けなくて、使わなくなりました(^^;

まったく違えばいいんでしょうけどねぇ。



> (昔に比べて)とっても使いやすくなってます



おぉ~、ありがとうございます。

明日、会社で試してみます(^^
 
コメントを投稿する
 
名前
タイトル
URL
コメント
コメント利用規約に同意の上コメント投稿を行ってください。

数字4桁を入力し、投稿ボタンを押してください。