質問

クラッシュしたとき(理解している理由で;それは問題ではありません。)デバッガは、実際のクラッシュコードが実行されたときに存在していたフレームのいずれかがなく、main()から__pthread_killまでのスタックを表示します。 objc_exception_rethrowと呼ばれるフレーム(メインから9番目)があります。これは、ココアの触感がすべての例外を回復し、優雅にも何かをするために何かをやろうとしていると信じるように私を導きます。ただし、デバッグが実際にXcode4のデバッグツールを使用して呼び出し元のスタックフレームを調査する機能を持っていない場合、または私のコードがクラッシュした場所を見ることさえありません。

OBJC_EXCEPTION_RETHROWの動作が起こらないようにする方法はあり、例外が発生したらすぐにクラッシュするだけですか?おそらく、早くクラッシュするデバッグ設定があります( right 時間)? (このプロジェクトのビルド設定のいかにめちゃくちゃではありません。)

役に立ちましたか?

解決 2

私は回答を見つけました:OBJ-C例外にブレークポイントを設定します。objc_excepion_throwがヒットされたとき、それはデバッガに行きます。残念ながら、これは例外が印刷される前に起こりますが、ブレークポイントのアクションを(Debugger Action)po *(id *)($ebp + 8)に設定することで(ほとんどの時間)、それを行うことができます(ほとんどの場合)。

他のヒント

例外を再投げることができないXcode設定はわかりません。私の知る限りでは、ランタイムによって再スローされます。デバッガが添付されずにアプリを実行してクラッシュさせることができます。クラッシュレポートには、この場合に必要なものを正確に提供する「最後の例外バックトレース」のセクションが含まれているはずです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top