7

私は以前、次のようにシミュレーターで実行されているアプリから例外の詳細を取得していました。

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で例外の詳細を取得するにはどうすればよいですか?

4

3 に答える 3

26

スタックを壊した場合objc_exception_throw、例外をスローした可能性のあるライブラリを呼び出す前に、選択したフレームがコードの最後のフレームになります。その時点で、lldbでは一部のレジスタにアクセスできません(考えられる説明については、この回答を参照してください。

objc_exception_throw例外の詳細を取得するには、スタックフレームを選択する必要があります。

objc_exception_throwスタックフレームを選択します

これでpo $eaxpo $raxOS X 64ビット、po $r0iPhone / iPad、po $x0arm64で実行している場合)、例外の詳細が表示されます。

于 2013-03-05T23:12:19.447 に答える
3

追加するものは何もありません。コンソールに例外の説明を出力するアクション(スクリプト)で例外ブレークポイントを設定するのに役立つこの素晴らしいガイドを使用してください。

于 2015-04-16T09:54:39.573 に答える
-3

に移動:

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

ゾンビを有効にします

于 2013-03-08T17:01:23.663 に答える