Visual C++ 2010在调试时拒绝显示std :: string值.显示<Bad Ptr>

ise*_*sky 6 c++ string debugging std

我有一种奇怪的感觉,这是最近的问题,发生在两台独立的计算机上.

当我调试并尝试从STL查看std :: string的值时,它显示为值.它说它的大小是15,容量是一些乱码.

数组值本身都表示CXX0030:错误:无法计算表达式.

这是非常令人沮丧的,如果我在字符串上调用c_str并将其分配给char*或者在需要时使用watch表达式,我仍然可以在调试时访问字符串值,但这非常繁琐,并且在调试复杂问题时会非常困难连续3天.

其他STL容器的内容显示得很好.

这发生在两台不同计算机上的多个项目中,我很确定我已经为项目设置了所有调试选项.没有优化,并确保生成调试信息.

MSa*_*ers 0

听起来像是小字符串优化在起作用。VS2010 最多可以输入 16 个字符。在这种情况下,没有指向字符串开头的指针,也没有容量成员,而是这些字节用于字符串内容本身。