Xcodeは、po <objectName>
でオブジェクトを印刷しようとするとエラーを表示しますが、1つのプロジェクトに対してのみです。
エラー:構造をマテリアライズできませんでした:変数<varName>のサイズがValueObjectのサイズと一致しません。実行でエラーが発生しました。PrepareToExecuteJITExpressionができませんでした。
また、Xcodeデバッガーは、すべてのオブジェクトがnil
(self
除外)として表示されます(表示されない場合、NSLog
は正しい出力を示します)。プロジェクトの何が問題なのかわかりません。他のプロジェクトはすべて正常に動作します。
それが何であるか考えていますか? (プロジェクトのクリーニングは効果がありませんでした。)
「リリースモード」ではないのですか?
変数値を表示するには、「デバッグモード」にする必要があります(左上隅の開始/停止ボタンの近くにあるプロジェクト名をクリックし、「スキームを編集...」、「実行」設定、「 [情報]タブ、[ビルド構成]の順にクリックします。ここで[デバッグ]を設定します。[リリース]の場合は、すべての問題を確認できます)。
デバッグ構成の「最適化レベル」を「なし」に設定し、問題を解決しました。
誰もが独自の解決策を持っているようです。
私にとっては、Objective-C
とSwift
を同時に使用します。
まず、TARGETS -> Build Settings
に移動してcode generation
を検索します
Apple LLVM 6.0
とSwift Compiler
が見つかります
Optimization Level
allをNone
に変更してから、デバッグすると、nil
以外の値が見つかる場合があります。
驚くべきことに、値を確認したら、この問題を永続的に解決し、Optimization Level
を以前のものに変更できます。
これが発生する他の方法があります。私にとっては、デバッグビルドであっても、「その他のCフラグ」の値が「-O2」に設定されていたためです。デバッグビルドでこれをオフにすると、問題が解決しました。
この問題が発生したばかりで、ビルド設定のDeployment Postprocessing = YES
が原因であることがわかりました。
これをNO
に変更すると、次のスクリーンショットに示すように修正されました。
Xcodeバージョン:OSX 10.9.5の6.0.1(6A317)
私は同様の問題に出くわします:ある時点で、Xcodeデバッガーはいくつかのオブジェクト型、特にNSStringsを(null)として出力しましたが、値で初期化されました。経由で印刷
NSLog(@"String value: %@", myString);
オブジェクトの正しい値が表示されました。
紛らわしい!問題の解決はかなり簡単でした。Xcodeをシャットダウンし、コンピューターを再起動しただけです。 Xcodeを再起動すると、すべてが再び正常に動作します:)。
ビルド設定でデバッグモードのLink-Time Optimization = No
を確認してください。
それは私にかかったすべてです。
ここでの解決策は、変数をpo
しようとするたびにerror: <EXPR>:1:1: error: use of unresolved identifier
が表示されるバグも修正します。
私にとっての解決策は、Build Settings
に移動してOptimization Level
を検索し、各Debug
設定がNone
に設定されていることを確認することでした。
ビルド設定の「その他のCフラグ」に移動し、デバッグ値を-o2から-O0に設定します
私もこれに遭遇し、リリースモードになっていることがわかったとき、デバッグに切り替えます...修正なし。最初にきれいにする必要があることがわかりました(cmd + shift + k)。
だから、リリースモードでビルドした後、開発時にすべてが再コンパイルされるわけではないので、lldbはシンボルを正しく読み取ることができないと思います。開発でクリーニングと再コンパイルした後、それは私のために働いた。