iOSアプリでランダムに発生するクラッシュを修正しようとしています(EXC_BAD_ACCESS(SIGSEGV)KERN_INVALID_ADDRESS、0xe104019e)。アプリケーションは同時にNSURLConnectionでデータをロードしたり、多数の入れ子になったUIViewを使って複雑なレイアウトを再描画したり、UIImageを描画したり、ダウンロードしたファイルをローカルディスクにキャッシュしたり、ローカルキャッシュなどの可用性を調べたりするなど、いくつかのスレッドに分けられ、クラッシュが発生したとき、私は正確なステップがそれに先行していたことを完全に混乱させます。オーダーされたコールスタック - Instruments Time Profiler?
スレッドに分散された発生順に呼び出しスタックを追跡し、クラッシュ前の1-5msの間にどのオブジェクトメソッドが呼び出されたかを知る方法を使用したい場合は、クラッシュを生成するバグを特定できます。楽器での時間プロファイラは、多くの詳細と追従性のこの種を提供していますが、サンプリングされたコールスタックはランダムな順序で提示されているように見える一見
- または多分私はそれが間違って取得...
がありますどのような実行の順序で正確に起こるか教えてくれる方法?
ありがとう - 確かに私はスレッドの問題を疑う。私はiOS5.0と自動参照カウント(ARC)を使って作業を追加するのを忘れていました。残念ながらゾンビは役に立たなかった。私は前にそれらを使ってみました... – Greg
@Greg ARCは、すべてのインスタンスに対して参照カウントを使用しています。コンパイラは、必要に応じてinc/dec保持カウントを呼び出すだけです... ARCを使用してコンパイルされたプログラムであっても、私の提案がうまくいくと思います(場合によってはARCがrefカウントサイクルを結合することも可能です)。そうじゃないの? – justin