在Xcode中检查STL容器

问题描述 投票:7回答:3

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

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

我错过了某个地方或某个地方吗?

我还读到有些宏可用于进一步增强调试查看器以检查更复杂的容器 - 但一直无法找到。

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

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

c++ xcode debugging macos stl
3个回答
1
投票

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

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

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

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


2
投票

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


1
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.