Shuhei Kagawa

Xcode で例外発生時のスタックトレースをデバッガに表示

Nov 14, 2009

iPhone アプリの開発で例外が発生したとき、Xcode のコンソールにはスタックトレースのアドレス(?)が表示されるだけで、内容がわかりません。 Objective-C ランタイムの例外送出部分にブレークポイントを設定することで、例外発生時のスタックトレースやコード中のオブジェクトの値をデバッガで詳しく見ることができます。

方法

“実行” => “ブレークポイントを管理” => “シンボリックブレークポイントを追加” を実行します。

出てきたダイアログに objc_exception_throw と入力。 これで、例外が発生した時にブレークされ、デバッガで詳細を見る事ができるようになります。

デバッガなので、もちろんコード中のオブジェクトの値を見ることもできます。便利ですね。

via Debugging Tip – objc_exception_throw breakpoint | markjnet

シンボリックブレークポイント

通常のブレークポイントではソースコード中の行を指定しますが、シンボリックブレークポイントはシンボル単位で指定するブレークポイントです。 ですので「あの関数が呼ばれたらブレーク」や「あのクラスのあのメソッドが呼ばれたらブレーク」ということができます。 今回の objc_exception_throw は Objective-C のランタイム中にある例外を送出する関数のようですね。