スレッドメモ

MLやNewsのスレッドをメモする試み。

2003|01|02|04|05|06|07|08|10|11|
2004|01|04|05|06|07|08|09|11|12|
2005|01|02|04|08|09|
2006|01|03|04|08|
2007|01|05|
2009|05|

2003-07-23 (水)

[fj][fj.comp.lang.c] デバッグ文(可変引数マクロ)C99 仕様

<3988628news.pl@insigna.ie.u-ryukyu.ac.jp> Shinji KONO (7/23)

最近、読んだ本 Writing Solid Code にもassert を多用し、出荷時には消す」みたいな話が載ってましたが、根本的に間違っているんじゃないかな。

<bfor0m$b76$1@bgsv5648.tk.mesh.ad.jp> tabe (7/24)

しかし、

・原子力発電所の制御
・航空機の制御、
・自動車エンジンの制御

等で、assertを有効にして出荷する事が、良い事なのか、悪い事なのか、私にはわかりません。

<m3u19bx54f.fsf@maedapc.cc.tsukuba.ac.jp> MAEDA Atusi (7/25)

無ければ,何が起こるか分からない.バグの記録も残らない.チェックが入れてあれば,少なくとも記録は(たとえばNVRAMに)とれるし,うまくすればフェイルセイフ処理を試みることもできるでしょう.

<bfpisc$d7$1@bgsv5648.tk.mesh.ad.jp> tabe (7/25)

コンパイラ提供の、assert() と、単なるデバッグプリント文を明確に分けて考えてください。assert() は、プログラムが即死します。

<m3ptjzwf2c.fsf@maedapc.cc.tsukuba.ac.jp> MAEDA Atusi (7/25)

#むかっっ

元々SNAPという「単なるデバッグプリント」マクロの話だったのではないですか.なんで偉そうに説教されなきゃならんのか.

簡便なassertは便利な場合も多いですが,自ずと限界があります.ケースバイケースとしか言いようがないでしょう.

<3988646news.pl@insigna.ie.u-ryukyu.ac.jp> Shinji KONO (7/25)

というわけで、僕の立場は、

エラー処理をしないことが前提のassertは、製品化しないようなプログラム(あるいは、マイクロソフトの売ったら勝ち、バグは知らん方針)が前提であり、時代遅れであって、使ってはいけないものだ。

ってなもんです。

本日のツッコミ(全1件) [ツッコミを入れる]
(2003-10-24 (金) 02:42)

マイクロソフト製品は、WindowsUpdateという機能でバグ修正が行われていますよ。<br><br><br>リリース時には消えるのがアサートなので、止まるアサートは混ざりません。<br>デバッグプリント、エラーメッセージとは明示的に分けるのは必須ですね。


2003|01|02|04|05|06|07|08|10|11|
2004|01|04|05|06|07|08|09|11|12|
2005|01|02|04|08|09|
2006|01|03|04|08|
2007|01|05|
2009|05|