0

我正在使用英特尔编译器和视觉工作室,我似乎无法调试地图中的值。我得到了一个快速预览,它显示了地图的大小,但元素只显示为“(错误)”,我将用一个简单的例子来说明,我已经生成了一个带有单个条目 myMapVariable[6]=1 的地图;

如果我将鼠标悬停在我得到这个“myMapVariable 1”并且在监视窗口中我得到相同的东西并且在加号上展开会给出一个单独的子条目,其中显示名称 =“(错误)”和值 = 0(这是错误的)。

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

4

3 回答 3

1

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

考虑在调试配置中重新编译项目(这将禁用优化器),看看是否有帮助。

于 2009-07-09T06:08:43.233 回答
0

我唯一的建议是确保地图已初始化并在范围内。否则,我不确定,我从未见过这个,但我现在使用 VS2008。

于 2009-07-09T05:59:37.760 回答
0

我从来没有能够使用 Intel 解决这个问题,但我现在已经转移到最新的 Visual Studio 编译器 VS2010,这不再是一个问题。我将此标记为答案,因为我不想留下未回答的问题。

于 2010-12-16T00:38:57.213 回答