アプリがクラッシュするたびに、Xcode はクラッシュの原因となった行として main() 関数の UIApicationMain() 呼び出しを強調表示します。以前はそれが正常だった場合もありますが (セグメンテーション エラーなど)、私が対処しようとしているクラッシュは、コンソールに詳細な情報が記録された単純な SIGABRT です。
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFDictionary setObject:forKey:]: attempt to insert nil value (key: Date)'
Xcode は古い SDK では行を正しく表示していましたが、Xcode 4.2 にアップグレードしてからは状況が変わりました。Xcode がクラッシュの原因を正確に把握している (または把握できる) ことは明らかですが、実際の行はまだ表示されていません。これに対する修正方法や回避策はありますか?
ベストアンサー1
また、すべての例外にブレークポイントが設定されていることを確認する必要があります。これにより、例外が発生している行で Xcode が停止します。[Xcode 4 の場合] 次の手順を実行します。
Xcode の左側にあるプロジェクト ナビゲータで、ブレークポイント ナビゲータ (上部のボタン バーのほぼ右側。アイコンは太い右矢印のように見えます) をクリックします。
ナビゲーターの下部にある「+」ボタンをクリックします。
「例外ブレークポイントの追加」をクリックします。
新しいブレークポイントが作成されます。必要に応じて構成する必要がありますが、その動作を微調整することもできます。
プロジェクトを実行し、例外を再現します。
また、サードパーティのライブラリ/フレームワークにリンクしているとおっしゃっていました。それらのフレームワーク内で例外が発生している場合は、コードがコンパイルされていて、Xcode では例外の原因となった行を実際に表示できないため、困難な状況に陥ることになります。この場合、ライブラリを正しく使用していることが確実な場合は、それらのライブラリのメンテナーにバグ レポートを提出する必要があります。