30

私はEricaSadunのTheiPhoneDeveloper'sCookbookからiPhoneプログラミングを学んでいます。シミュレーターで81ページから始まる温度変換の例の手順に従って作成したアプリを実行すると、キャッチされない例外が原因でアプリが終了します。(iPhoneSDK Googleグループに投稿した質問については、http://groups.google.com/group/iphonesdk/browse_frm/thread/6f44a90fdb8da28a?hl = enを参照してください。)

main()からUIApplicationMain()を呼び出した後、例外がスローされます。デバッガーでスタックトレースを調べると、(もちろん)アセンブリだけが表示されます。スローされた例外の種類を確認するにはどうすればよいですか?

更新
デバッガーコンソールから例外の詳細を学習することで、問題を解決するのに十分でした。(http://groups.google.com/group/iphonesdk/browse_frm/thread/6f44a90fdb8da28a?hl=enを参照してください。)シンボリックブレークポイントをに設定できることを確認しましたobjc_exception_throwが、役に立ちました。

4

4 に答える 4

53

にブレークポイントを設定しobjc_exception_throw、Run ではなく Debug 経由でアプリを実行します

明確にするために、ブレークポイントなしで例外を取得したときに実際に表示されるのは、常に同じスタック トレースです。これは、キャッチされていない例外ハンドラーです。例外の種類は実行コンソールに記録されますが、例外が発生した場所のバックトレースを確認したい場合は、それがブレークポイントの目的です。

于 2008-12-21T18:51:15.327 に答える
15

新しい Xcode (少なくとも v4.5 以降) では、次のようにしてすべての例外を簡単にキャッチできます。

  1. ブレークポイント ナビゲーターを表示する (⌘6)
  2. 左下の+をクリック
  3. 例外ブレークポイントを追加

上記は のブレークポイントと同じだと思いますobjc_exception_throwhttp://samwize.com/2012/09/26/xcode-4-dot-5-tips-and-tricks/

于 2012-09-29T08:44:39.967 に答える
6

http://ijoshsmith.com/2011/11/28/debugging-exceptions-in-xcode-4-2/

samewize のソリューションと同じですが、すべてのプロジェクトでこのブレークポイントをデフォルトで表示する方法も示しています (ブレークポイントを右クリックし、ブレークポイントを移動、ユーザー)。

于 2013-02-14T14:45:06.307 に答える
3

ケビンが答えたように、にブレークポイントを設定すると、より役立つデバッグ情報が見つかりますobjc_exception_throw

Xcode 4.2 を使用している場合、このシンボリック ブレークポイントを追加するには、Breakpoint Navigator > 左下の追加アイコンをクリック > Add symbolic breakpoint > Enter objc_exception_throwfor Symbol > Done を選択します。

于 2012-02-04T06:45:22.880 に答える