在Xcode中检查STL容器

时间:2008-11-08 23:30:14

标签: c++ xcode debugging macos stl

从谷歌搜索它看起来像Xcode(在我的情况下为3.1)应该至少试图给我一个理智的STL容器的调试视图 - 或至少是矢量。

然而,每当我去调试器中查看一个向量时,我只看到M_impl,有M_start和M_finish成员(以及其他几个) - 但是没有任何介于两者之间! (这是一个调试版本,顺便说一下。)

我错过了某个地方的设置或某事吗?

我还读过,有些宏可以进一步增强调试查看器来检查更复杂的容器 - 但是找不到任何容器。

我还希望能够查看std :: wstrings,而不必放入内存查看器。它显示std :: string很好。有什么我可以做的,以显示std :: wstring?

我意识到这是一个复合问题 - 但它确实是同一主题的一部分。

3 个答案:

答案 0 :(得分:2)

您可以为不同的变量类型创建Data formatters,以便它们显示更好: - )。

答案 1 :(得分:1)

查看容器项目的能力可能依赖于模板化类型的复杂性。对于像int,bool等这样的平凡对象,甚至像

这样的简单类模板
template <class T> struct S { T m_t; }

通常在调试器变量视图中查看矢量项没有问题。我通常会说,因为似乎偶尔会出现导致错误的错误 - 特别是在调试时 - 不要按照我的预期行事。其中一个是变量视图中的垃圾或完全无用的信息。通常,对目标进行干净的重建(有时甚至更彻底地重新启动XCode,然后进行干净的重建)可以解决问题。

至于其他容器类型,很可能难以有效地查看此信息。例如,地图通常被实现为红黑树。调试器必须提前知道,以便正确地遍历树并向您显示所有键和值。这可能是从Xcode或GDB中提出了很多要求 - 特别是因为前者更多地关注Objective-C和普通C而不是C ++(因此,尽管命名空间普遍存在且重要性很高,但命名空间仍会导致代码完成。)

答案 2 :(得分:1)

尝试在Project-&gt; Edit Scheme中使用GDB调试器...并考虑在项目构建设置中将编译器切换到LLVM GCC 4.2(在Build Options - &gt; Compiler for C / C ++ / Objective-C下)。

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

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