Fehler: Der Visual C++ .NET oder Visual C++ 2005-Debugger kann Variablen Std:: String und std::wstring nicht korrekt anzeigen

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 326616 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Hinweis
Alles erweitern | Alles schließen

Auf dieser Seite

Problembeschreibung

Der Debugger kann nicht Werte entsprechend für die folgenden Zeichenfolgen anzeigen:
  • Std:: String-Variablen, wenn die Länge der Zeichenfolge größer als 15 Zeichen ist.
  • Std::wstring-Variablen, wenn die Länge der Zeichenfolge kleiner als 15 Zeichen ist.

Ursache

Die Variable Std:: String oder std::wstring wird als statische Puffer gespeichert, wenn die Länge kleiner als 15 Zeichen ist. Wenn die Länge der Zeichenfolge größer als 15 Zeichen ist, wird die Zeichenfolge als Zeiger auf Speicher gespeichert.

Sie können die Datei autoexp.dat, um die Debugger-Anzeige von Std:: String-Variable ändern. Der Member _Bx._Buf wird verwendet, an die Std:: String als statische Puffer gespeichert. Der Member _Bx._Ptr wird verwendet, um anzugeben, Std:: String als Zeiger auf Speicher gespeichert wird. Wenn der Member _Bx._Ptr für Std:: String in Datei autoexp.dat nicht angegeben ist, zeigt der Debugger nicht Std:: String-Variablen an, die größer als 15 Zeichen Länge haben. Wenn Member _Bx._Buf für std::wstring in Datei autoexp.dat nicht angegeben ist, zeigt der Debugger nicht die std::wstring-Variablen an, die Länge kleiner als 15 Zeichen enthalten.

Lösung

Die Debugger-Komponente, die Variablenwerte angezeigt wird als Expression Evaluator (EE) bezeichnet. Eine Instanz des et behandelt den systemeigenen Code, und die andere Instanz des verwalteten Codes verarbeitet. Die Datei autoexp.dat bietet Anpassung für die systemeigene EE und die Mcee_mc.dat-Datei enthält die Anpassung des verwalteten et. Um dieses Problem zu beheben, ändern Sie die autoexp.dat-Datei.

Gehen Sie folgendermaßen vor um die Datei autoexp.dat zu ändern:
  1. Öffnen Sie Editor oder einem anderen Texteditor.
  2. Öffnen Sie die autoexp.dat-Datei aus dem Ordner c:\Programme\Microsoft Visual Studio .NET\Common7\Packages\Debugger.
  3. Suchen Sie in die Datei autoexp.dat die folgenden Zeilen ein:
    • std::basic_string<char,std::char_traits<char>,std::allocator<char> >=<_Bx._Buf>
    • std::basic_string<unsigned short,std::char_traits<unsigned short>,std::allocator<unsigned short> >=<_Bx._Ptr>
    • std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >=<_Bx._Ptr>
  4. Ersetzen Sie die Zeilen, die Sie in Schritt 3 mit den folgenden Zeilen:
    • std::basic_string<char,std::char_traits<char>,std::allocator<char> >=
      _Buf=<_Bx._Buf> _Ptr= <_Bx._Ptr>
    • std::basic_string<unsigned short,std::char_traits<unsigned short>,std::allocator<unsigned short> >=_Buf=<_Bx._Buf> _Ptr= <_Bx._Ptr>
    • std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >=<_Bx._Buf> _Ptr= <_Bx._Ptr>

Status

Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel genannten Microsoft-Produkten handelt.

Weitere Informationen

Schritte zum Reproduzieren des Verhaltens

  1. Erstellen Sie ein neues Visual C++ Win32-Projekt:
    1. Klicken Sie im Menü Datei auf neu .
    2. Klicken Sie unter Projekttypen auf Visual C++-Projekte und klicken Sie dann auf Win32-Projekt in Vorlagen .

      Hinweis: In Visual Studio 2005 wird Visual C++-Projekte in Visual C++ geändert.
    3. Nennen Sie das Projekt LongStringDemo .
    4. Klicken Sie im Win32-Anwendungs-Assistenten auf Anwendungseinstellungen , und wählen Sie dann als Konsolenanwendung Anwendungstyp .
    5. Klicken Sie unter Zusätzliche Optionen aktivieren Sie das Kontrollkästchen Leere auf und klicken Sie dann auf Fertig stellen .
  2. Im Projektmappen-Explorer , klicken Sie mit der rechten Maustaste auf Quelldateien und klicken Sie dann auf Hinzufügen eine neue C++-Datei .
  3. Der Name der Datei LongStringDemo.cpp .
  4. Fügen Sie folgenden Code zu der LongStringDemo.cpp-file:
    #include <string>
    using namespace std;
    void main()
    {
    	//Ansi String
    	string szAnsiString;
    	szAnsiString = "c:\\Program Files\\Microsoft Visual Studio .Net";
    
    	//Wide Char String
    	wstring wszWCharString;
    	wszWCharString = L"c:\\Program Files\\Microsoft Visual Studio .Net";
    }
    
  5. Klicken Sie im Menü Erstellen auf Erstellen Projektmappen .
  6. Klicken Sie im Menü Debuggen auf Einzelschritt in (F11) , und Debuggen.
  7. Im Menü Debuggen auf Windows zeigen Sie, zeigen Sie auf Überwachung und klicken Sie dann auf watch1 .
  8. Fügen Sie die Variable SzAnsiString und WszWCharString Variable hinzu das Überwachungsfenster. Sie können auch den Wert ansehen, zeigen Sie auf die Variable SzAnsiString oder WszWCharString.
  9. Überprüfen Sie im Fenster Überwachen den Wert der Variablen SzAnsiString oder WszWCharString.

Eigenschaften

Artikel-ID: 326616 - Geändert am: Donnerstag, 12. Januar 2006 - Version: 2.0
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Visual C++ 2005 Express Edition
  • Microsoft Visual C++ .NET 2002 Standard Edition
Keywords: 
kbmt kbdebug kbbug KB326616 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 326616
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com