8

これは最近の問題であり、2 台の別々のコンピューターで発生しているように感じます。

デバッグ中に STL から std::string の値を見ようとすると、値として表示されます。サイズは15とあり、容量は文字化けした巨大な数字です。

配列値自体はすべて CXX0030: エラー: 式を評価できません。

これは非常に苛立たしく、文字列に対して c_str を呼び出して char * に割り当てるか、必要に応じてウォッチ式を使用すれば、デバッグ中に文字列値にアクセスできますが、非常に面倒で、複雑な問題をデバッグするときは非常に困難になります。 3日連続。

他の STL コンテナーの内容は問題なく表示されます。

これは、2 台の異なるコンピューター上の複数のプロジェクトで発生します。プロジェクトにすべてのデバッグ オプションが設定されていると確信しています。最適化はなく、確実にデバッグ情報を生成します。

4

3 に答える 3

4

同じ問題があり、autoexp.dat のビジュアライザーを変更して修正しました。ここにあります: "C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Packages\Debugger\autoexp.dat" または Visual Studio と Windows のバージョンに応じて同様の場所。

「std::basic_string」の変更:

$e._BUF_SIZE を置き換えます

sizeof($e._Bx._Buf)/sizeof(char) による

または sizeof($e._Bx._Buf)/sizeof(wchar_t)

https://connect.microsoft.com/VisualStudio/feedback/details/677683/std-string-incorrectly-displayed-in-debugger

于 2014-06-25T11:51:28.093 に答える
0

小さな文字列の最適化が機能しているように聞こえます。VS2010 では 16 文字までです。その場合、文字列の先頭へのポインターも容量メンバーもありませんが、代わりにそれらのバイトが文字列の内容自体に使用されます。

于 2012-12-03T11:58:45.773 に答える