3
5

More than 3 years have passed since last update.

Xcodeのコンソール出力が使えないときのデバッグ法

Posted at

対象

  • macOSやiOSでのネイティブアプリ開発
  • SwiftやObjective-Cでの開発
  • React Nativeなどクロスプラットフォーム環境でも対応している場合があります
  • Xcodeのデバッグコンソールが使えない

Xcodeのデバッグコンソールが使えない状況とは

  • Push通知等によるバックグランドからの起動時の挙動を見たい(iOS)
  • IME,webcamプラグイン,その他プラグインでXcodeからの起動ではなく指定場所に配置してシステムによって起動されたときの挙動をしらべたい(mac)

このように,Xcodeからの起動では上手く動作するが,実際に使ってみると上手く動かない,その理由を調べたいというシーンがあります.こういう場合に紹介する方法を使うと簡単に値の出力ができます.

使用方法

macOS,iOSのライブラリのFoundationに含まれるNSLogを使用します.

Swift
NSLog("Debug Message")
Objective-C
[NSLog @"DebugMessage"];

NSLogはXcodeから実行するとXcodeのデバッグコンソールに出力しますが,shellから起動されたり,プラグインとして起動したり,その他の起動方法で起動した場合にはmacOSなら/var/log/system.logに出力されます.ここに出力されたログはConsole.appで見ることができます.

Screenshot 2020-05-12 at 15.54.11.png

Console.appでログを見る

macOSに標準でインストールされているConsole.appを開くと次のような画面が表示され,様々なアプリからのログが出力されているのをリアルタイムに見ることができます.

Consoleでは接続されているiOSのデバイスも見ることができ,左のペインから選択できます.大量のログが出力され続けるので自分のアプリの名前で検索するとよいでしょう.

Screenshot 2020-05-12 at 15.51.01.png

注意事項

Objective-CではもともとNSLogで出力するのが一般的かも知れませんが,Swiftではprintを使う方が多いと思います.NSLogはXcodeのコンソールに出力しても詳細に出るので便利ですが,一方でprintに比べて負荷が高いそうです.場合によって,普段はprintを使ったり,リリース時はNSLogを含めないようにするなどしたほうが良いかも知れません.

関連資料

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5