tarosukeの日記: 例えば
日記 by
tarosuke
カーネルのどこかでぬるぽを踏んでいるとする。
で、マップファイルを頼りにその関数を突き止めたとする。
でも、その関数は往々にしてぬるぽを食らっているだけだったりする。
どこかにぬるぽを食わせているバカがいるはずだ。
こんな時、ぬるぽを食らっている関数のプロトタイプがヘッダにあるなら関数
を引数チェックするマクロで置き換えてやればバカがどこにいるのか発見でき
る。
具体的には
int hoge(huga* abeshi);
なプロトタイプがあったら*その後*に
#define hoge(abeshi) ( !(abeshi) ?
printf(__FILE__":%d:バカ発見!\n", __LINE__), 0 :
hoge(abeshi) )
な行を追加するという寸法。
2行目の0はhogeが何かだめぽ時に返す値にしたりすればよい。
要は引数に問題がある場合はassertを関数の外でやると効果的って事だな。
というのをさっき思い付いたか思い出したかしたのでメモしてみる。
で、適用しようとしたのだが...先客がいた。__Pだ。むむん。
例えば More ログイン