Xcodeでデバッグマクロ

Pocket
LINEで送る

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で開発するときにも使えます。
ヘッダファイルかソースファイルのヒープ領域にマクロを書いとけば大丈夫なはず。きっと。

debugとreleaseの切り分けは、メニューバーの「Product」→「Edit Scheme」からできる。

One Reply to “Xcodeでデバッグマクロ”

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください