【发布时间】:2012-12-03 09:39:48
【问题描述】:
我有一种奇怪的感觉,好像这是最近的问题,并且发生在两台不同的计算机上。
当我调试并尝试从 STL 查看 std::string 的值时,它显示为值。它说它的大小是 15,容量是一个乱码。
数组值本身都说CXX0030:错误:无法计算表达式。
这非常令人沮丧,如果我在字符串上调用 c_str 并将其分配给 char * 或在需要时使用监视表达式,我仍然可以在调试时访问字符串值,但这非常乏味并且让生活非常艰难连续 3 天调试复杂问题。
其他 STL 容器的内容显示得很好。
这发生在两台不同计算机上的多个项目上,我很确定我已经为项目设置了所有调试选项。没有优化,肯定会生成调试信息。
【问题讨论】:
-
要回答这个问题,我们需要一些发生此错误的可编译代码。
-
无论如何,这都会发生在所有代码上。如果我使用 std::string 它在调试器中显示为
。这可能是我的项目配置存在问题,并且在某处启用了一些优化,或者我的调试符号未正确加载。我在谷歌上做了一些搜索,还没有找到答案。我还发现了一些关于 autoexp.dat 的东西,它可以调试可视化数据以使更复杂的类型易于调试。我认为 autoexp.dat 会以某种方式绕过小字符串优化并在所有情况下正确显示它。我再看一下。 -
你可以使用 const char* test = str.c_str();在此语句之后,调试器将显示值。