21

iOS シミュレーターでのデバッグでは、$eax レジスターを読み取ってエラー メッセージを取得することができました。ただし、それが新しい XCode バージョン 4.6 および iOS 6.1 であるかどうかはわかりません。これ以上はできません。

(lldb) po $eax
error: Couldn't materialize struct: Couldn't read eax (materialize)
Errored out in Execute, couldn't PrepareToExecuteJITExpression

今何?また、eax は実際のデバイスにはありません。どうすればよいですか?

4

3 に答える 3

28

trojanfoe は素晴らしい答えを出しましたが、メッセージを表示していない例外の結果として $eax を出力しようとしている場合は、Debug Navigator の objc_exception_throw フレームにいることを確認してください。 (⌘</kbd>+6) when printing it out. Otherwise you'll get the "couldn't materialize" error above.

于 2013-03-10T19:24:55.243 に答える
18

このLLDBガイドによると、次のものを使用できます。

register read

現在のスレッドの汎用レジスタを調べるには

于 2013-02-05T10:00:53.533 に答える
3

現在のビルド スキームがデバッグ モードになっていることを確認してください。そうしないと、コンパイルされたアプリがデバッグ用の追加情報を取り除くことによって最適化されます。

独自のビルド スキームを設定する場合は、[ビルド設定] -> [コード生成] -> [最適化レベル] に移動し、値を「なし [-O0]」に設定します。

于 2014-11-17T09:55:18.650 に答える