2017-04-25 3 views
0

私はどこでアプリケーションがクラッシュするのかを検出する必要があります。私は1行ずつデバッグしようとしましたが、突然、「アセンブラコード」からデバッガがジャンプします(正しい名前ですか?)。問題のコードが何であるか クラッシュが発生したときに私はスピーチへのテキストを行い、インディゴに私のアプリをロギングしています。 は、どのように私はこのログ情報の意味を理解することができます?:このログ情報でのみ、アプリケーションがクラッシュする場所を知る方法

TIMESTAMP Indigo[1675:621373] -[NSNull length]: unrecognized selector sent to instance 0x1a7c38ef8 
TIMESTAMP Indigo[1675:621373] invalid mode 'kCFRunLoopCommonModes' provided to CFRunLoopRunSpecific - break on _CFRunLoopError_RunCalledWithInvalidMode to debug. This message will only appear once per execution. 
TIMESTAMP Indigo[1675:621373] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSNull length]: unrecognized selector sent to instance 0x1a7c38ef8' 
*** First throw call stack: 
(0x181aeefd8 0x180550538 0x181af5ef4 0x181af2f4c 0x1819eed2c 0x181ad4ff4 0x181ad513c 0x187c28234 0x100162f8c 0x1001a2bd8 0x187f63114 0x187f6332c 0x187e1c6e0 0x187e18978 0x187e1834c 0x187dfcfbc 0x1001a55b0 0x100041da8 0x100041b8c 0x1000e7c4c 0x1820f81fc 0x18210fef8 0x1825bd804 0x182502760 0x1824f2b18 0x1825bfba0 0x1009bda10 0x1009c2b78 0x181a9d0c0 0x181a9acdc 0x1819cad94 0x183434074 0x187c83130 0x10002160c 0x1809d959c) 
libc++abi.dylib: terminating with uncaught exception of type NSException 
+2

ブレークポイント例外を作成し、デバッガは例外のスタックトレースを持つ必要があります。 Xcodeは間違いなくあります。これにより、問題の発生場所を特定するのに役立ちます。それは左側のビューの1つですが、私の目の前にXcodeがないので、どれを正確に伝える必要はありません。 –

+0

*例外ブレークポイント*を試しましたか? – Rikh

+0

クラッシュをデバッグする方法については、http://www.raywenderlich.com/10209/my-app-crashed-now-what-part-1を参照してください。 – rmaddy

答えて

2

あなたはobjc_exception_throwにブレークポイントを設定する必要があります。その後、

b objc_exception_throw 

と:Xcodeはそれを設定するためのいくつかのUIの細かい点がありますが、スクリーンショットを掘り起こすことなく、それを行うために説明する最も簡単な方法は、(クラッシュが発生した前に)あなたのデバッガコンソールにコマンドを入力することです認識できないセレクタ例外がスローされると、デバッガは例外がスタックをあまり役に立たない場所にクラッシュするのを待つ代わりに、を停止します。

例外自体も明らかです。メッセージlengthNSNullに送信しています。私はあなたがどこかでNSStringのすべてであると思うオブジェクトのコレクションを持っていると確信していますが、そのコレクションには時折NSNullが表示されています。バックエンドがクライアントが期待しているすべての情報を提供していないとき、iOSクライアントコードでさまざまなWebサービスからJSON結果を消費していることがわかりました。

UPDATE:graficallyのXCodeのクリックで セットBのobjc_exception_throw: デバッグ>ブレークポイント>

+0

ありがとう!これが私の必要なものです。アプリケーションがクラッシュしたとき、Xcodeはどのラインが原因であるかを示し、私はそれを修正することができました。 – Josh

+0

lldbは "言語例外"ブレークポイントタイプも持っていますので、lldbから 'break set -E objc'を実行できます.Xcodeはこれをカバーしています... –

関連する問題