デバッグ時にログを吐かせる方法はシンプルだが・・・

注意: この記事は1年以上前に掲載されたものです。情報が古い場合がありますのでお気を付け下さい。

アプリを実際に走らせてデバッグをするときに、往々にしてログを吐かせる方法が使われている。この方法はとてもシンプルで、単純明快という大きな利点がある。一方で、それを使うというのは、必ずしも適切とは言い難い側面もある。

この方法は、多くの場合、以下のようなコードを書くことで行なっている場合が多い。

int foo = bar();
printf("result: %d\n", foo);

iOSアプリであれば、Objective-CならNSLog()、Swiftならprint(_:)などが使われる。

こうした手法は、実際にアプリを走らせている特にその結果をデバッグコンソールのログに吐かせることで、処理を止めないで結果を確認することができるという大きな利点がある。実際に私も含め、多くの開発者が使っているものと考えられる。

とは言え、機密情報やプライバシー情報までログに出力されてしまうという可能性もあり、この場合は、情報漏洩の原因となってしまう危険性があるため、実際の環境では、いたずらにログを吐かせるというのは禁物である。したがって、可能であれば、デバッグ時のみログを吐かせるようにすることが求められる。

また、言語にもよるが、このログを吐かせる処理が別のバグを呼び起こしてしまう、あるいはバグを再現できなくなってしまうという可能性もある。これは、コンパイラーによる最適化で、実際に出力されるバイナリーデータが変わってしまうことがあるということによるものである。

こういった問題もあるとは言え、デバッグ時にログを吐かせるのはかなりやりやすいので、うまく使いこなしていきたいものである。

タイトルとURLをコピーしました