2012-02-29 19 views
7

私のアプリは一点でクラッシュし続けます。これは、例外ブレークポイントがアプリクラッシュ.... objc_exception_throw

return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 

でなぜ起こるか、私はクラッシュを引き起こしているものは考えている私に教えてくれありません。左側には、objc_expcetion_throwが原因だったと伝えられます。これをどのようにデバッグできますか? おかげ

+0

この行に移動するまで、デバッグを試みてください。 Xcode 4.2では、main.mの行で例外を直接指定する問題があります。それがなければ、誰もあなたを助けることができません。さらにコードを投稿してください。 –

+0

ブレークポイントを設定せずにアプリケーションを実行すると、スタックトレースと原因がログに記録されます。 – JeremyP

答えて

6

このような場合は、すべての例外を壊すブレークポイントを作成します。これはブレークポイントタブの追加ボタンをクリックするだけで作成されるデフォルトのブレークポイントです。

このブレークポイントでは、XCodeは例外の時点で停止し、スタックとともに発生したコード行が表示されます。

私はこのイメージを掲載していましたが、十分な担当者がいません。

5

使用して、@try/@catch

@try { 
    return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 
} 
@catch (NSException *ex) 
{ 
    // log ex... 
} 

それとも、キャッチされない例外ハンドラを使用することができます:最後に、あなたはいつもにObjC例外でブレークすることができます

void uncaughtException(NSException *except) 
{ 
    // log Except 
    NSLog(@"Exception!"); 
} 

NSSetUncaughtExceptionHandler(uncaughtException); 
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 

を:

Product->debug->create symbolic breakpoint 
Symbol: objc_exception_throw 
+0

動作しません。まだログとブレークポイントは同じ古い場所で:( – 0xSina

+0

@PragmaOnceデバッグの2つの新しいメソッドで私の更新された答えをチェック! –

1

リチャードのアドバイスとインプラントに従ってくださいuncaughtExceptionハンドラを終了します。ハンドラにブレークポイントを設定します。例外が発生した場合は、出力コンソールに次のように入力してください。

po [except callStackSymbols] 

これは、例外の発生源について詳しく説明します。

注:exceptは、使用した例外変数の名前です。

関連する問題