【问题标题】:Visual C++ 2010 vector debug - no contents shownVisual C++ 2010 矢量调试 - 未显示内容
【发布时间】:2011-12-28 14:09:40
【问题描述】:

当我尝试在 VC++ 2010 调试器中访问向量时,唯一可用的元素是“_M_start”、“_M_end”和“_M_end_of_storage”。示例截图如下:

我记得前段时间能够访问向量的实际内容,但很长一段时间以来情况并非如此(我已经能够忍受一段时间了)。是否有我不小心关闭的特定设置/功能,或者我完全错过了什么?

【问题讨论】:

  • 您使用的是 STLport 还是 MS STL?
  • 要么你的 VC++ 安装搞砸了,要么你使用了一个非 VS2010 STL 代码,没有为 VS2010 重新编译
  • 首先它是一个调试版本,你有调试符号吗?其次,您可以删除解决方案 *.sdf 文件以重置智能感知等。
  • 这可能是因为它是一个vector<CMeshEdge> 而VS 不知道如何显示一个CMeshEdge 对象。 vector<int> 有同样的问题吗?
  • 是的,这是一个调试版本,不,不幸的是,int 向量是相同的。 @NirMH - 我应该提到我正在使用一个名为 Marmalade 的 SDK,它支持跨平台移动开发。也许我可能无意中使用了 STLport? (此处的链接:link)另一件事:我刚刚制作了一个带有矢量的快速控制台应用程序,并且能够在调试器中访问其内容。这确实可能是 SDK 特有的问题。

标签: c++ visual-studio-2010 debugging visual-c++ stl


【解决方案1】:

众所周知,VS IDE 无法显示非 Microsoft 拥有的 STL 的 STL 容器的调试信息。我在使用 STLPort 库时遇到了同样的问题。

但是,您仍然可以使用手表来探索矢量的内容,只是比较乏味。 您可以通过在 _M_start 成员上使用数组索引方法来访问向量的元素。添加到您的手表

meshEdges._M_start[0]

然后您将能够看到向量的第一个元素的内容。 探索/查看整个向量的元素没有简单的方法,您必须自己迭代它,但它仍然是一些东西。

您可以在此链接http://umairsaeed.com/2009/11/23/visualizing-stlport-data-structures-in-visual-studio-debugger 中阅读更多内容。它描述了如何将上述“知识”添加到 VS IDE Watch 组件中。我不确定它是否是最新的 VS2010 编译器,但您可以自己探索。

【讨论】:

  • 谢谢,我可能会为我正在使用的 SDK 使用的 STL 容器研究一个特定的 autoexp 可视化器。无论哪种方式,就像您提到的那样,还有其他(尽管更乏味)方法来调试向量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多