iOS開発時にデバッグログを
NSLog(@"%s", __func__);
とか
NSLog(@"%s", __PRETTY_FUNCTION__);
って書いていたけど、フォーマット指定子を忘れたり、リリース前に消したりするのが面倒だったので、
関数名(引数も)/行数/文字列を出力するデバッグマクロを書いてみたよ。
【使い方】
①「アプリケーション名_Prefix.pch」に以下を追加(ヘッダに書くとimportするのが面倒なので.pchに書く)
// デバッグログマクロ #ifdef DEBUG #define dbgLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__); #else #define dbgLog(...) #endif
②ログ出力したい箇所に以下を追加
dbgLog(@"hoge")
または
dbgLog();
このときのログ出力はこうなります。
2012-0x-0x 0x:xx:xx.xxx アプリ名[530:15503] -[ViewController 関数名] [Line 143] hoge
または
2012-0x-0x 0x:xx:xx.xxx アプリ名[530:15503] -[ViewController 関数名] [Line 137]
【マクロ変数】
__PRETTY_FUNCTION__:クラス名を含む関数名
__LINE__:行数
##__VA_ARGS__:可変長引数を取るマクロ(##をつけた場合は引数がなくてもOK)
デバッグマクロはC/C++のプリプロセッサで使えるのでComandLine Toolで開発するときにも使えます。
ヘッダファイルかソースファイルのヒープ領域にマクロを書いとけば大丈夫なはず。きっと。
[…] Xcodeでデバッグマクロ […]