从谷歌搜索它看起来像Xcode(在我的情况下3.1)应该至少试图给我一个理智的STL容器调试视图 - 或至少矢量。
但是,每当我在调试器中查看向量时,我只看到M_impl,有M_start和M_finish成员(以及其他几个) - 但两者之间没有任何内容! (这是一个调试版本,顺便说一句)。
我错过了某个地方或某个地方吗?
我还读到有些宏可用于进一步增强调试查看器以检查更复杂的容器 - 但一直无法找到。
我也希望能够查看std :: wstrings,而不必放入内存查看器。它显示std :: string很好。有什么我可以做的显示std :: wstring?
我意识到这是一个复合问题 - 但它确实是同一主题的一部分。
查看容器项目的能力可能依赖于模板化类型的复杂性。对于像int,bool等那样的平凡对象,甚至是简单的类模板
template <class T> struct S { T m_t; }
我通常在调试器变量视图中查看矢量项没有问题。我通常会说,因为似乎偶尔会出现导致错误的错误 - 特别是在调试时 - 不要按照我的预期行事。其中一个是变量视图中的垃圾或完全无用的信息。通常,目标的干净重建(有时甚至是更彻底的重新启动XCode,然后进行干净的重建)可以解决问题。
至于其他容器类型,很可能很难有效地查看此信息。例如,地图通常被实现为红黑树。调试器必须提前知道,以便正确地遍历树并向您显示所有键和值。这可能是从Xcode或GDB中提出了很多要求 - 特别是因为前者更多地关注Objective-C和普通C而不是C ++(因此,尽管命名空间无处不在和重要性,命名空间仍然会破坏代码完成)。
您可以为不同的变量类型创建Data formatters,以便它们显示更好:-)。
尝试在Project-> Edit Scheme中使用GDB调试器...并考虑在项目构建设置中(在构建选项 - >编译器下为C / C ++ / Objective-C)将编译器切换到LLVM GCC 4.2。
在XCode 4中,我发现我需要这些设置来查看像V3f的std :: vector这样的东西,其中V3f是模板浮点矢量类型。
请注意,我认为您不能将ARC(自动引用计数)与LLVM GCC 4.2一起使用。