2013-03-01 5 views
6

私はそうのようなシミュレータで実行中のアプリケーションからの例外の詳細を取得するために使用:XCode 4.6で例外の詳細を取得する方法を教えてください。

po $eax 

私はそれが動作を停止していますXCodeの4.6にアップグレードして以来。私はいつもこのエラーが出る:

error: warning: couldn't get object pointer (substituting NULL): 
Couldn't find '_cmd' with appropriate type in scope 
Couldn't materialize struct: Couldn't read eax (materialize) 
Errored out in Execute, couldn't PrepareToExecuteJITExpression 

私は人々がこれを使用することをお勧め見てきました:

register read eax 

しかし、それは私にこのエラーを与える:私は、例外の詳細を取得するにはどうすればよい

eax   = error: unavailable 

XCode 4.6?

+0

あなたはどんな例外を指していますか? Objective-CやC++など何か? – trojanfoe

+0

Objective-C例外。 – Simon

+0

そして、代わりに 'objc_exception_throw'を打ち破るのはなぜですか? – trojanfoe

答えて

26

objc_exception_throwをブレークした場合、例外がスローされたライブラリを呼び出す前に、選択したスタックフレームがコードの最後のフレームになります。 。

Select the objc_exception_throw stack frame

:その時点でlldbあなたは(可能な説明のためにthis answerを参照してください

をあなたはobjc_exception_throwスタックフレームを選択する必要があり、例外の詳細を取得するにはレジスタの一部にアクセスすることはできません。 po $eaxpo $raxあなたはarm64にiPhone/iPadで、po $x0po $r0、OS X 64ビット上で実行している場合)あなたの例外の詳細を与える必要があります

+0

これは例外ブレークポイントでも機能します。ありがとう! – Simon

+0

うれしい私は助けることができます。明確にするために: 'objc_exception_throw'を打つこと**は**例外のブレークポイントです。 – Sebastian

+0

これはブレークポイントであり、例外でブレークしますが、名前が 'Exception Breakpoint'であるのはXCode機能ではありません。 – Simon

-3

移動先:。

Product -> Scheme -> Edit Scheme -> Run on the left -> diagnostics tab 

して、ゾンビを有効

3

私はちょうどあなたのコンソールに例外の説明を印刷しアクション(スクリプト)でセットアップ例外ブレークポイントを助けることthis awesome guideを使用し、追加することは何もありません。

関連する問題