1. ホーム
  2. objective-c

[解決済み] Xcodeはクラッシュの原因となる行を表示しない

2022-07-08 02:09:07

質問

私のアプリがクラッシュするたびに、Xcode は main() 関数内の UIApicationMain() 呼び出しをクラッシュの原因となった行として強調表示します。いくつかのケースでは、それは正常でした (たとえば、セグメンテーション フォールト) が、私が対処しようとしているクラッシュは、コンソールに記録された詳細な情報を持つ単純な SIGABRT です。

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFDictionary setObject:forKey:]: attempt to insert nil value (key: Date)'

Xcodeは、古いSDKでは行を正しく表示していましたが、Xocde 4.2にアップグレードしてから変わりました。 Xcodeがクラッシュの原因を正確に知っている(または知ることができる)ことは明らかですが、それでも実際の行を表示しません。これに対する修正または回避策はあるのでしょうか?

どのように解決するのですか?

また、すべての例外に対してブレークポイントが設定されていることを確認する必要があります。 これにより、Xcode は例外が発生している行で停止するようになります。 次のようにしてください[Xcode 4の場合]。

  1. Xcode の左側にあるプロジェクト ナビゲーターで、ブレークポイント ナビゲーターをクリックします (上部ボタン バーの右側のほぼすべての部分です。 アイコンは太い右矢印のように見えます)。

  2. ナビゲーターの下部で、"+"ボタンをクリックします。

  3. "例外ブレークポイントの追加"をクリックします。

  4. 新しいブレークポイントが作成されます。 それは必要に応じて設定されるべきですが、その動作を微調整することができます。

  5. プロジェクトを実行し、例外を再現してください。

また、あなたは、いくつかのサードパーティのライブラリ/フレームワークにリンクしたことを述べました。 例外がそれらのフレームワーク内で発生している場合、コードがコンパイルされ、Xcode が例外を引き起こした行を実際に表示できないので、苦労することになります。 もしこれが事実で、あなたがライブラリを正しく使用していることを確信しているならば、それらのライブラリのメンテナにバグレポートを提出すべきです。