我有一種奇怪的感覺,這是最近的一個問題,發生在兩臺獨立的電腦上。Visual C++ 2010在調試時拒絕顯示std :: string值。顯示<Bad Ptr>
當我在調試並試圖從STL中查看std :: string的值時,它顯示爲值。它說它的大小是15,容量是一些亂碼。
數組值本身都說CXX0030:錯誤:無法評估表達式。
這是非常令人沮喪的,我仍然可以在調試時訪問字符串值,如果我在字符串上調用c_str並將其賦值給char *或者如果需要的話可以使用監視表達式,但是這非常乏味並且會讓生活變得很困難當連續3天調試複雜問題時。
其他STL容器的內容顯示正常。
這發生在兩個不同的計算機上的多個項目,我敢肯定,我有所有的項目設置調試選項。沒有優化,並確保生成調試信息。
要回答這個問題,我們需要在那裏出現此錯誤的編譯代碼。 –
無論發生什麼,都會發生在所有代碼上。如果我使用std :: string,它會在調試器中顯示爲。 這可能是我的項目配置中的一些問題,某些優化已啓用,或者我的調試符號未正確加載。 我在Google上做了一些搜索,但還沒有找到答案。 我還發現了一些關於autoexp.dat的內容,它調試可視化數據以使更復雜的類型易於調試。我想autoexp.dat會繞過小字符串優化,並在所有情況下正確顯示它。我會再看一看。 –
iseletsky
你可以使用const char * test = str.c_str();在此語句值之後,調試器才能顯示。 –