2010-08-28

Debug Log on debug build

デバッグするときNSLogをよく使いますが、普通にNSLogを挿入してしまうとON/OFFがしにくい(Debugビルドのみ表示させたい)ので、普段は下記のように定義をきって制御しています。

#ifdef DEBUG_LOG

#define DLog(format, ...) NSLog([NSString stringWithFormat:@"[%@] %@", NSStringFromClass([self class]), format], ## __VA_ARGS__, nil)

#else

#define DLog(format, ...)

#endif


使い方はNSLogと同じですが、先頭に実行したクラスの関数名が表示されるようにしています。
これをプロジェクトの設定で、Debug構成のときだけプリプロセッサマクロに定義したDEBUG_LOGを追加すれば、Debugビルドのときだけ有効になって表示されます(間違って全構成で設定しないように...)。

関数だけを表示するものとか、機能ごとに定義を分けたりとか、いろいろ工夫するとより便利になります。

ちなみに、DLogの最後のnilを忘れると下記のwarningがでることがあります。
warning: format not a string literal and no format arguments

No comments:

Post a Comment