Error: El depurador de Visual C++ .NET o Visual C++ 2005 no puede mostrar variables std:: String y std:: wstring correctamente

Seleccione idioma Seleccione idioma
Id. de artículo: 326616 - Ver los productos a los que se aplica este artículo
Aviso
Expandir todo | Contraer todo

En esta página

Síntomas

El depurador no puede mostrar valores adecuadamente para las cadenas siguientes:
  • std:: String variables, si la longitud de la cadena es mayor que 15 caracteres.
  • variables de std:: wstring, si la longitud de la cadena es menor que 15 caracteres.

Causa

La variable de std:: String o std:: wstring se almacena como búfer estático si la longitud es menos de 15 caracteres. Si la longitud de la cadena es mayor que 15 caracteres, la cadena se almacena como un puntero a memoria.

Puede modificar el archivo autoexp.dat para controlar la presentación del depurador de std:: String variable. El miembro _Bx._Buf se utiliza para especificar el std:: String almacenada como búfer estático. El miembro _Bx._Ptr se utiliza para especificar que std:: String se almacena como un puntero a memoria. Cuando no se especifica el miembro _Bx._Ptr para std:: String en el archivo autoexp.dat, el depurador no muestra las variables de std:: String tienen longitud mayor que 15 caracteres. Cuando no se especifica el miembro _Bx._Buf para std:: wstring en el archivo autoexp.dat, el depurador no muestra las variables de std:: wstring tienen menos de 15 caracteres de longitud.

Solución

El componente de depurador que muestra los valores de las variables se conoce como evaluador de expresiones (EE). Una instancia de EE controla el código nativo y la otra instancia controla el código administrado. El archivo autoexp.dat ofrece personalización de los EE nativo y el archivo Mcee_mc.dat proporciona la personalización de EE administrado. Para resolver este problema, modifique el autoexp.dat archivo.

Para modificar el archivo autoexp.dat, siga estos pasos:
  1. Abra el Bloc de notas o cualquier otro editor de texto.
  2. Abra el archivo autoexp.dat desde la carpeta de .NET\Common7\Packages\Debugger c:\Archivos de programa\Microsoft Visual Studio.
  3. En el archivo autoexp.dat, busque las líneas siguientes:
    • 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. Reemplace las líneas que encuentra en el paso 3 con las líneas siguientes:
    • 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>

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados en la sección "La información de este artículo se refiere a:" de este artículo.

Más información

Pasos para reproducir el comportamiento

  1. Cree un nuevo proyecto Win32 de Visual C++:
    1. En el menú archivo , haga clic en nuevo .
    2. En Tipos de proyecto , haga clic en Proyectos de Visual C++ y, a continuación, haga clic en Proyecto Win32 en plantillas .

      Nota En Visual Studio 2005, Proyectos de Visual C++ se cambia a Visual C++ .
    3. Proyecto el nombre LongStringDemo .
    4. En el Asistente para aplicaciones Win32 , haga clic en Configuración de la aplicación y seleccione el Tipo de aplicación como Aplicación de consola .
    5. Bajo Opciones adicionales , haga clic en casilla de verificación Proyecto vacío y, a continuación, haga clic en Finalizar .
  2. En el Explorador de soluciones , haga clic con el botón secundario en Archivos de origen y, a continuación, haga clic en Agregar un nuevo C++ archivo .
  3. Asigne un nombre al archivo LongStringDemo.cpp .
  4. Agregue el código siguiente para el 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. En el menú Generar , haga clic en Generar soluciones .
  6. En el menú Depurar , haga clic en paso A (F11) y comience a depurar.
  7. En el menú Depurar , elija ventanas , seleccione archivos y, a continuación, haga clic en watch1 .
  8. Agregar la variable szAnsiString y la variable wszWCharString a la ventana Inspección. También puede ver el valor señalando la variable szAnsiString o wszWCharString.
  9. En la ventana Inspección , compruebe el valor de variable szAnsiString o wszWCharString.

Propiedades

Id. de artículo: 326616 - Última revisión: jueves, 12 de enero de 2006 - Versión: 2.0
La información de este artículo se refiere a:
  • Microsoft Visual C++ 2005 Express Edition
  • Microsoft Visual C++ .NET 2002 Standard
Palabras clave: 
kbmt kbdebug kbbug KB326616 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 326616

Enviar comentarios

 

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