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

查看容器项目的能力可能取决于模板类型的复杂性。对于 int、bool 等琐碎的对象,甚至是简单的类模板,如

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

在调试器变量视图中查看矢量项通常没有问题。我之所以这么说,是因为似乎偶尔会出现导致某些问题的错误——尤其是在调试时——不符合我的预期。其中之一是变量视图中的垃圾或完全无用的信息。通常对目标进行干净的重建(或者有时甚至更剧烈地重新启动 XCode,然后进行干净的重建)可以解决问题。

至于其他容器类型,很可能很难有效地查看这些信息。例如,地图通常被实现为红黑树。调试器必须提前知道这一点,以便正确地遍历树并向您显示所有键和值。这可能对 Xcode 或 GDB 提出了很多要求——尤其是因为前者更关注 Objective-C 和纯 C 而不是 C++(因此,尽管名称空间无处不在且很重要,但它们往往会扼杀代码完成)。

于 2008-11-09T00:08:39.813 回答
1

尝试在 Project->Edit Scheme... 中使用 GDB 调试器,并考虑在 Project Build Settings 中将编译器切换到 LLVM GCC 4.2(在 Build Options -> Compiler for C/C++/Objective-C 下)。

在 XCode 4 中,我发现我需要这些设置来查看 V3f 的 std::vector 之类的东西,其中 V3f 是模板化的浮点向量类型。

请注意,我认为您不能将 ARC(自动引用计数)与 LLVM GCC 4.2 一起使用。

于 2012-07-11T09:53:32.477 回答