Xcodeデバッガーは、オブジェクトを印刷せず、nilを表示します。


165

Xcodeは、を使用してオブジェクトを印刷しようとするとエラーを表示しますがpo <objectName>、1つのプロジェクトに対してのみです。

スクリーンショット

エラー:構造体を具体化できませんでした:変数<varName>のサイズがValueObjectのサイズと一致しません実行でエラーが発生しました、PrepareToExecuteJITExpressionができません

Xcodeデバッガーでは、すべてのオブジェクトがnilself除外されている)とNSLog表示されます(そうでない場合)(図に示すように、正しい出力が表示されます)。プロジェクトの何が悪いのか分かりません。他のすべてのプロジェクトは正常に動作します。

それが何であるか考えていますか?(プロジェクトのクリーンアップは効果がありませんでした。)


私にはそれはある種のポインタの問題のように聞こえますが、私は完全に正直に確信しています。何をしようとしていますか?
user2967030 2013年

3
エラーは、そのプロジェクトのすべてのオブジェクトで発生します。NSStringブレークポイントの上に1行も作成されました!
Binarian 2013年

1
(しかし、しようとしてくれてありがとう、エラーメッセージを追加しました。質問で述べたように、クリーニングは、変更は何もしません。。
Binarian

3
最適化なしで構築していることを確信していますか?(-O0)
iccir 2013年

1
最適化は、プロジェクト設定だけでなく、ターゲットでも設定できます。mスタックがありました:(
バジル

回答:


269

「リリースモード」ではありませんか?

変数値を表示するには、「デバッグモード」にする必要があります(左上隅の開始/停止ボタンの近くにあるプロジェクト名をクリックし、[スキームの編集...]、[実行]設定、[ Info」タブ、次に「Build Configuration」。ここで「Debug」を設定します。それが「Release」にある場合は、すべてのnilが表示される問題です。


3
私はそれのようになるように設定を変更する方法を、1つの構成を有していますかdebug configuration
Binarian 2013

2
空のプロジェクトを作成して、のすべての違いを確認できるようBuild Settingsになりました。デプロイメントプロパティStrip debug symbols during copyはYESに設定されています。
Binarian 2013

16
Alex1987私はセット@ Strip debug symbols during copyNOしてOptimization LevelNone -O0プロジェクトにBuild Settings
Binarian

32
残念ながら、特定の状況では、最適化をオフにしてデバッグシンボルが存在するデバッグモードでlldbがこれを行っていました。バグreport.apple.comにアクセスする時間
ctpenrose、

4
同じ問題がありました-最適化レベルは「なし」でした。問題は、デバッグ時もリンク時最適化(LTO)が「はい」に設定されていることでした。
pi3 2014年

38

デバッグ構成の「最適化レベル」を「なし」に設定して問題を解決しました。


2
おかしい、それはうまくいきませんでした。私は反対をしました。私が切り替えたところFastest, Smallest[-Os]、うまくいきました。
ネイトハット

さまざまな提案がたくさんありますが、これ([デバッグの最適化]を[なし]に設定)で解決できました。
Dejal 2015年

29

Schemeの設定でAddress Sanitizerがオフになっていることを確認してください。アドレスサニタイザはデバッガではうまく機能しません。

  1. スキームの編集(製品>>スキーム>>スキームの編集)に移動し、[実行]を選択して、[診断]タブに移動します。
  2. 「アドレスサニタイザーを有効にする」がオフになっていることを確認します。

ここに画像の説明を入力してください


4
これが私の解決策でした。どうやらこれが起こり得る理由はたくさんあります。
マンロー

16

誰もが独自のソリューションを持っているようです。

私にとっては、私が使用Objective-CしてSwift同時に。

まず、に移動しTARGETS -> Build Settingsて検索しますcode generation

あなたが見つけるApple LLVM 6.0Swift Compiler

Optimization LevelすべてをNoneに変更し、次にデバッグすると、値が見つからない場合がありますnil

驚くべきことに、値が表示されたら、この問題を永続的に解決してOptimization Levelから、を以前の値に変更できます。


11

これが発生する可能性がある他の方法があります。私にとっては、デバッグビルドであっても、「その他のCフラグ」の値が「-O2」に設定されていたためです。デバッグビルドでこれをオフにすると、問題が解決しました。


9

フィルタリングされたデバッグ出力

私にとって、Xcodeはデバッガーの出力を除外していました。出力設定がデバッガ出力またはすべての出力であることを確認してください


6

この問題が発生Deployment Postprocessing = YESし、ビルド設定に原因があることがわかりました。

NO以下のスクリーンショットにあるように、これを修正して修正します。

ここに画像の説明を入力してください

Xcodeバージョン:OSX 10.9.5の6.0.1(6A317)


5

私は同様の問題に遭遇しました:ある時点で、Xcodeデバッガーは、いくつかのオブジェクトタイプ、特にNSStringsを(null)として出力しましたが、値で初期化されました。プリントアウト

NSLog(@"String value: %@", myString);

オブジェクトの正しい値が表示されました。

紛らわしい!問題の解決はかなり簡単でした。Xcodeをシャットダウンしてコンピューターを再起動しただけです。Xcodeを再起動した後、すべてが再び正常に動作します。


5

Link-Time Optimization = Noビルド設定でデバッグモードを確認してください。


Xcode 8でこの問題に遭遇したのは、動的フレームワークのビルド設定だけです!Thx
vmeyer

3
  1. 派生データを削除
  2. かなりのXcode /再起動
  3. クリーンプロジェクト

それは私のためにかかったすべてです。


2

ここでの解決策は、変数error: <EXPR>:1:1: error: use of unresolved identifierを試すたびに表示されるバグも修正しpoます。

私にとっての解決策は、に移動しBuild Settingsて検索しOptimization Level、各Debug設定がに設定されていることを確認することでしたNone


これで実際に修正されました。設定を無効にすることの欠点は何ですか?
Jasper


0

私もこれに遭遇しました、そして私がリリースモードにいるのを見つけたとき、私はデバッグに切り替えます...修正なし。最初にクリーンアップ(cmd + shift + k)を実行する必要があることがわかりました。

だから私は何が起こるかと思うのは、組み込みのリリースモードの後、開発ですべてが再コンパイルされるわけではないので、lldbはシンボルを正しく読み取ることができないということです。開発でのクリーニングと再コンパイルの後、それは私にとってはうまくいきました。


-3

実際には、システムは箱から出して動作するはずであり、複数の異なる設定へのリンクが原因ではなく、物事がうまくいくかどうかはわかりません。

なぜデバッグモードでは、Appleだけが答えることができないミステリーであるのに、システムが常にデバッグを許可しないのですか(気にかけている場合は、それが疑わしいのですが)。

結局のところ、デバッグ/非デバッグの違いは、メモリ/ディスク領域のみを埋めるメタデータを持つ余分なテーブルになるでしょう。

シミュレーターまたはデバイスに対して直接コンパイルしている場合、それらの余分なメガバイトは気になりません。

したがって、前の世紀から私が知っているすべてのideがうまく機能する、非常に基本的で単純なことを行うために、追加のループを実行する必要があります。

加えて、私にとって有効だったのは、「デバッグ」でリンク時間の最適化を「モノリシック」から「いいえ」に変更することでした(xcode 8)。


Xcode =箱から出してすぐにパッケージマネージャーがない、オートコンプリートやその他の機能が
意のままに
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.