7

グーグルで調べてみると、Xcode(私の場合は3.1)は、少なくともSTLコンテナまたは少なくともベクトルの正常なデバッグビューを提供しようとしているようです。

ただし、デバッガーでベクトルを見に行くと、M_impl が表示され、M_start メンバーと M_finish メンバー (およびその他のいくつか) が表示されますが、その間には何もありません! (これはデバッグビルドです)。

設定か何かが欠けていますか?

また、より複雑なコンテナーを検査するためにデバッグ ビューアーをさらに拡張できるマクロが利用可能であることも読みましたが、何も見つかりませんでした。

また、メモリ ビューアーにドロップすることなく、std::wstrings を表示できるようにしたいと考えています。std::string は正常に表示されます。std::wstring を表示するためにできることはありますか?

これが少し複雑な質問であることは理解していますが、実際にはすべて同じ主題の一部です。

4

3 に答える 3

2

さまざまな変数タイプのデータ フォーマッタを作成して、より適切に表示することができます :-)。

于 2008-11-08T23:37:08.287 に答える
1

Project->Edit Scheme... で GDB デバッガーを使用してみてください。また、Project Build Settings (Build Options -> Compiler for C/C++/Objective-C の下) でコンパイラを LLVM GCC 4.2 に切り替えることを検討してください。

XCode 4 では、V3f の std::vector のようなものを表示するには、これらの設定が必要であることがわかりました。ここで、V3f はテンプレート化された float ベクター型です。

LLVM GCC 4.2 では ARC (自動参照カウント) を使用できないことに注意してください。

于 2012-07-11T09:53:32.477 に答える
1

コンテナーのアイテムを表示する機能は、テンプレート化された型の複雑さに依存する場合があります。int、bool などの単純なオブジェクトや、

template <class T> struct S { T m_t; }

通常、デバッガーの変数ビューでベクター項目を表示しても問題はありません。私が通常と言うのは、特にデバッグ時に、予期したとおりに動作しない原因となるバグが時折あるように思われるからです。それらの 1 つは、変数ビュー内の不要な情報またはまったく役に立たない情報です。通常、ターゲットのクリーン リビルド (または、場合によっては、XCode のより抜本的な再起動とそれに続くクリーン リビルド) によって問題が修正されます。

他のコンテナー タイプに関しては、この情報を効率的に表示するのはおそらく難しいでしょう。たとえば、マップは赤黒木として実装されることがよくあります。デバッガーは、ツリーを適切にたどってすべてのキーと値を表示するために、事前にそれを知る必要があります。これはおそらく Xcode や GDB から多くのことを求められているでしょう。特に、前者は C++ よりも Objective-C とプレーンな C に重点を置いているためです (したがって、名前空間はその遍在性と重要性にもかかわらずコード補完を無効にする傾向があります)。

于 2008-11-09T00:08:39.813 に答える