6

デバッグ中に C++ std::strings を表示しない Xcode プロジェクトがあります。LLDB コンソール ウィンドウでステートメントを出力したり、各文字を一度に 1 つずつ出力したりする必要があり、時間がかかり、読みにくいため、非常にイライラします。

この同じプロジェクトを使用している他のすべての人が同じ問題を抱えており、他のプロジェクトはこの問題を見ていないので、これはある種のプロジェクト設定だと思います. 私はデバッグ中で、最適化がオンになっていないため、問題としてそれを排除しました。また、作業中のプロジェクトとこの問題のあるプロジェクトのプロジェクト設定を比較しましたが、すべての点で同一に見えます。

これは私が得た出力のサンプルです。*_M_pこの例では正しいです。文字列の最初の文字は疑問符です:

ここに画像の説明を入力

一度に 1 文字ずつ文字列を調べると、デバッグ コンソールに次のように表示されます。

ここに画像の説明を入力

LLVM から GDB に戻すと問題が解決する可能性があると聞いたことがありますが、GDB では特定のデータ型のデバッグに関する他の問題が発生したため、その場合は新しい問題が発生するだけです。

4

4 に答える 4

4

私の同僚がこれを解決する方法を見つけました: スキーム設定で Guard Malloc オプションをオフにします。

  • 問題が発生しているスキームをクリックします
  • スキームの編集をクリックします
  • 診断をクリックします
  • 「Guard Malloc を有効にする」オプションのチェックを外します。

これで std::strings が表示されるはずです。なぜそうなのかはわかりません。Xcode のバグかもしれませんが、少し前に発見されていたと思います。また、これは複数のプロジェクトでテストされており、Guard Malloc を有効にすると、常に std::strings がデバッガーに正しく表示されません。

于 2013-08-23T00:13:00.503 に答える
0

これは元のポスターの問題の原因ではないかもしれませんが、私の問題を引き起こしました。ほとんどのコードが 6.2 でビルドされているのに、私は Xcode 6.4 を使用していました。6.2 に切り替えると、デバッガーで値が表示されるようになりました。

于 2015-09-15T18:39:06.823 に答える
0

このlldbコマンドを試してください

exp -f s -- myString

c String の形式で文字列の式を表示するようにlldbに指示しています

于 2014-03-06T11:35:50.113 に答える