XCodeの最新バージョン(これは4.2かそこらから起こっていると思います)で多くのインスタンスに遭遇しています。例外がスローされたときのスタックトレースには、ひどく詳細が欠けています。
ここでのスクリーショットは、そのようなケースの1つを示しています。実際、このシナリオには少なくともいくつかのコンテキストがあり( JKArrayクラスで発生したことを示しています)、多くの場合、「内部」スタックアイテム(スレッド内の2〜3エントリのみ、いずれもに存在しない)しか取得しません。ユーザーコードまたは私が見ることができるもの)。この例でも、JKArrayがどこに割り当てられたり解放されたりしたのかわからないので、どのインスタンスやどこに問題があるのかわかりません。
考え:
- 一般的な「例外時」ブレークポイントを追加してみました
- 出力にはいくつかのマイナーな情報があります。この場合: "malloc:*オブジェクト0x10e18120のエラー:解放されるポインターが割り当てられませんでした*デバッグするためにmalloc_error_breakにブレークポイントを設定してください"。ただし、これを行っても、ブレークポイントは例外と同じスタックでヒットするため、これ以上は取得できません...
- 他のデバッガに切り替えてみました
- 独自のカスタム例外ハンドラーを使用してみました
- プロファイラーを使用してリークを探してみました。私が見つけることができる漏れはありません。
私が何をしても、アプリを悩ませている問題を切り分けることができないようです。さらに、問題は毎回まったく同じではないようです。これはおそらく、アプリの同時実行性が高いためです...そのため、問題を修正するための適切な方法がありません。
編集:この特定の例外の場合、私は原因を見つけることになりました。[リリース]して[自動リリース]されたオブジェクトを作成しようとしました。しかし、これはすべて私のコード内で起こっていました。XCodeが、アプリ全体を探すように強制するのではなく、問題を見つけるのに役立つ適切なスタックトレースを提供しない理由を理解できません...