Xcodeに接続しているときにアプリケーションがクラッシュすると、問題をデバッグして解決するために必要なすべての情報が得られます。しかし、Xcodeに接続されていないときにアプリケーションがクラッシュしないときは、は、nilのアンラップ、アサーションの失敗、または例外であったかどうかわかりません。クラッシュログにクラッシュの理由を含めるにはどうすればよいですか?
後者の2つのケースでは、アサーションまたは例外メッセージもありません。
この情報をクラッシュログに含めるにはどうすればよいですか?
"コピー時にストリップデバッグシンボル"と "リンクされた製品をストリップ"がNOに設定され、デバッグビルド用のデバッグ情報フォーマットがdSYMでDWARFに設定されています。はい、私は電話機にデバッグビルドをインストールしています。私は上記の情報ではなく、象徴的なスタックトレースを取得します。
ケース1: nilをラップ解除:ライン「致命的なエラー:予期せずnilをオプションの値をアンラップながら、」クラッシュログにありません。
ケース2:アサーション失敗:私が持っている場合:
assert(level > 2, "Level should've been at least 2")
クラッシュログに表示されない「レベルは、少なくとも2をしてきたはずです」。時には、アサーションの失敗(他の理由とは対照的に)のためにクラッシュしたとは言わない場合もあります。
ケース3:例外:次のような例外メッセージが欠落しています。
Terminating app due to uncaught exception 'NSGenericException', reason: '*** -[AVCaptureDevice setTorchMode:] May not be called without first successfully gaining exclusive ownership of the device using -lockForConfiguration:'
を時々、それもそれは例外のため墜落したことを言っていない(他のいくつかの理由ではなく) 。
Xcodeに接続しているときにクラッシュするすべての情報を得るためにXcodeに接続していないとクラッシュする方法を教えてください。
これはひとつの選択肢ですが、今のところ私はプロダクションにログインしているのではなく、テスト中です。 –
テスト中にログに記録しておきたい場合は、プロダクションからログアウトすることもできます。 – Malik
私は知っていますが、問題は私が自分の電話機でしか動作しないようにするために単純なものがあるところです。クラッシュした場合は、次にXcodeに接続するときに、質問に記載されている情報が表示されます。 –