C++ VS2005中损坏的std::地图可视化程序

C++ VS2005中损坏的std::地图可视化程序,c++,visual-studio,visual-studio-2005,stl,visualization,C++,Visual Studio,Visual Studio 2005,Stl,Visualization,我正在使用英特尔编译器和visual studio,似乎无法调试映射中的值。我得到了一个快速预览,它显示了地图的大小,但是元素只显示为“(error)”,我将用一个快速的例子来说明,我生成了一个地图,其中一个条目myMapVariable[6]=1 如果我把鼠标移到上面,我会得到这个“myMapVariable 1” 在watch窗口中,我得到了相同的结果,并在加号上展开,得到一个子条目,上面写着name=“(error)”和value=0(这是错误的) 我在autoexp.dat调试文件中添加

我正在使用英特尔编译器和visual studio,似乎无法调试映射中的值。我得到了一个快速预览,它显示了地图的大小,但是元素只显示为“(error)”,我将用一个快速的例子来说明,我生成了一个地图,其中一个条目myMapVariable[6]=1

如果我把鼠标移到上面,我会得到这个“myMapVariable 1” 在watch窗口中,我得到了相同的结果,并在加号上展开,得到一个子条目,上面写着name=“(error)”和value=0(这是错误的)


我在autoexp.dat调试文件中添加了一行,显示了名为[raw members]的子项下的原始成员变量。在没有帮助的情况下,我几乎已经达到了进一步深入研究的能力极限,因此我想问这里是否有人可以提供一些见解

我唯一的建议是确保映射已初始化且在范围内。否则,我不确定,我从未见过这种情况,但我现在使用的是VS2008。

您很可能使用了激进的优化设置。至少你的截图是那种典型的东西。在这种情况下,调试器会主动将热值填充到寄存器中,可能是在停止时,正确可视化整个映射所需的值已经被丢弃,并被其他足够的内容覆盖(例如,指向当前节点的指针)。我可以想象,英特尔C++以其高质量的优化而闻名,它比VC++更经常地做这种事情(但是我也看到过,后者也经常足够)。
考虑在调试配置中重新编译项目(这将禁用优化器),看看这是否有帮助。

我从未使用Intel解决过此问题,但我现在已使用最新的visual studio编译器VS2010,这不再是问题。我把这个标记为答案,因为我不想留下悬而未决的问题

是的,它是初始化的,我有时不得不停止调试器并添加一个循环,在映射中迭代,这样我就可以看到值是什么:(也许2008年是答案(或者至少是一个很好的转移)Pavel,感谢反馈-我实际上是在调试模式下运行它,该模式具有/Od标志(已禁用优化)。我可能会用直接的MSVC编译器尝试一下,看看这是否有什么不同。看看这是否与英特尔编译器如何处理std::map有关