在XCode中检查STL容器

phi*_*red 7 c++ debugging macos xcode stl

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

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

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

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

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

我意识到这是一个复合问题 - 但它确实是同一主题的一部分.任何完整或部分回复表示赞赏!

Mic*_*hel 1

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

template <class T> struct S { T m_t; }
Run Code Online (Sandbox Code Playgroud)

通常在调试器变量视图中查看向量项没有问题。我说“通常”是因为似乎偶尔会出现错误,导致某些东西(尤其是在调试时)不按我预期的方式运行。其中之一是变量视图中的垃圾或完全无用的信息。通常,目标的干净重建(或者有时甚至是更彻底地重新启动 XCode,然后进行干净重建)可以解决问题。

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

  • 由于 Visual Studio 至少自 2008 年以来就成功做到了这一点,因此我认为它并没有太多期望 (2认同)