Chyba: Ladicím programu Visual C++ .NET nebo Visual C++ 2005 nemůže zobrazit proměnné std::string a std::wstring správně

Překlady článku Překlady článku
ID článku: 326616 - Produkty, které se vztahují k tomuto článku.
Poznámka
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Příznaky

Ladicí program se nemusí zobrazit hodnoty pro následující řetězce odpovídajícím způsobem:
  • std::String proměnných, pokud délka řetězce je větší než 15 znaků.
  • std::wstring proměnných, pokud délka řetězce je méně než 15 znaků.

Příčina

Proměnné std::string nebo std::wstring je uložena jako statické vyrovnávací paměti, pokud délka je menší než 15 znaků. Pokud délka řetězce je větší než 15 znaků, je řetězec uložen jako ukazatel do paměti.

Můžete upravit soubor Autoexp.dat řízení zobrazení ladicí program std::string proměnné. Člen _Bx._Buf slouží k určení std::string uloženy jako statické vyrovnávací paměti. Člen _Bx._Ptr slouží k určení, že std::string uloženy jako ukazatel do paměti. Při _Bx._Ptr člen není zadán pro std::string v souboru autoexp.dat, ladicí program nezobrazí std::string proměnné, které mají délku větší než 15 znaků. Při _Bx._Buf člen není zadán pro std::wstring v souboru autoexp.dat, ladicí program nezobrazí std::wstring proměnné, které mají délku méně než 15 znaků.

Řešení

Součást Debugger, který zobrazuje hodnoty proměnných je známé jako vyhodnocení výrazů (EE). Jedna instance EE zpracovává nativního kódu a ostatní instance zpracovává spravovaný kód. Souboru Autoexp.dat poskytuje přizpůsobení nativní EE a přizpůsobení spravované EE poskytuje souboru Mcee_mc.dat. Chcete-li tento problém vyřešit, upravte Autoexp.dat souboru.

Změna souboru Autoexp.dat, postupujte takto:
  1. Otevřete Poznámkový blok nebo jiném textovém editoru.
  2. Otevřete soubor Autoexp.dat ze složky c:\Program Files\Microsoft Visual Studio .NET\Common7\Packages\Debugger.
  3. V souboru Autoexp.dat vyhledejte následující řádky:
    • 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. Nahradit řádky vyhledaného v kroku 3 s následujícími řádky:
    • 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>

Prohlášení

Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedeny na začátku tohoto článku.

Další informace

Kroky pro reprodukci tohoto chování

  1. Vytvořit nový projekt Visual C++ Win32:
    1. V nabídce soubor klepněte na tlačítko Nový.
    2. V části Typy ProjectProjekty Visual C++ klepněte na příkaz Win32 Project v šablonách.

      Poznámka: V aplikaci Visual Studio 2005 Visual C++ projekty změněn na Visual C++.
    3. Název projektu LongStringDemo.
    4. V okně Průvodce aplikací Win32 klepněte na tlačítko Nastavení aplikací a vyberte Typ aplikace jako Aplikace konzoly.
    5. Ve skupinovém rámečku Další možnosti klepnutím zaškrtněte políčko Prázdný projekt a potom klepněte na tlačítko Dokončit.
  2. V Aplikaci Solution Explorer klepněte pravým tlačítkem myši Zdrojové soubory a potom klepněte na příkaz Přidat nové C++ souboru.
  3. Název souboru LongStringDemo.cpp.
  4. Přidejte následující kód do 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. V nabídce vytvořit klepněte na příkaz Sestavit řešení.
  6. V nabídce Debug klepněte na tlačítko Step Into (F11) a ladění spustit.
  7. V nabídce Debug přejděte na položku Windows, přejděte do hodinek a potom klepněte na tlačítko watch1.
  8. Přidat proměnnou szAnsiString a proměnná wszWCharString okno kukátka. Hodnotu můžete také sledovat podle směřující proměnné szAnsiString nebo wszWCharString.
  9. V okně kukátka ověřte hodnotu proměnné szAnsiString nebo wszWCharString.

Vlastnosti

ID článku: 326616 - Poslední aktualizace: 12. ledna 2006 - Revize: 2.0
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Visual C++ 2005 Express Edition
  • Microsoft Visual C++ .NET 2002 Standard Edition
Klíčová slova: 
kbmt kbdebug kbbug KB326616 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:326616

Dejte nám zpětnou vazbu

 

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