Erro: O depurador do Visual C++ .NET ou Visual C++ 2005 não é possível apresentar de correctamente std::string e std::wstring variáveis

Traduções de Artigos Traduções de Artigos
Artigo: 326616 - Ver produtos para os quais este artigo se aplica.
Importante
Expandir tudo | Reduzir tudo

Nesta página

Sintomas

O depurador não pode apresentar valores adequadamente para as seguintes cadeias:
  • Std::String variáveis, se o comprimento da cadeia for maior que 15 caracteres.
  • Std::wstring variáveis, se o comprimento da cadeia é menor que 15 caracteres.

Causa

A variável std::string ou std::wstring é guardada como estática da memória intermédia se o comprimento é menor que 15 caracteres. Se o comprimento da cadeia for maior que 15 caracteres, a cadeia é armazenada como um ponteiro para a memória.

Pode modificar o ficheiro Autoexp.dat para controlar a apresentação de depurador de std::string variável. O membro _Bx._Buf é utilizado para especificar std::string guardado como estática da memória intermédia. O membro _Bx._Ptr é utilizado para especificar que std::string é armazenada como um ponteiro para a memória. Quando o membro _Bx._Ptr não for especificado para std::string no ficheiro autoexp.dat, o depurador não apresenta as variáveis de std::string com comprimento superior a 15 caracteres. Quando _Bx._Buf membro não for especificado para std::wstring no ficheiro autoexp.dat, o depurador não apresenta as variáveis de std::wstring tenham menos de 15 caracteres de comprimento.

Resolução

O componente de depurador que apresenta valores de variáveis é conhecido como funcionalidade Avaliação de expressão (EE). Uma instância do EE processa o código nativo e a outra instância processa o código gerido. O ficheiro Autoexp.dat fornece personalização para EE nativo e o ficheiro Mcee_mc.dat fornece personalização da EE gerido. Para resolver este problema, modifique o Autoexp.dat ficheiro.

Para modificar o ficheiro Autoexp.dat, siga estes passos:
  1. Abra o bloco de notas ou outro editor de texto.
  2. Abra o ficheiro Autoexp.dat da pasta c:\Programas\Microsoft Files\Microsoft Visual Studio .NET\Common7\Packages\Debugger.
  3. No ficheiro Autoexp.dat, localize as seguintes linhas:
    • 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. Substitua as linhas que localizou no passo 3 com as seguintes linhas:
    • 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>

Ponto Da Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados no início deste artigo.

Mais Informação

Passos para reproduzir o comportamento

  1. Crie um novo projecto de Visual C++ Win32:
    1. No menu ficheiro , clique em Novo .
    2. Em Project Types , clique em Projectos do Visual C++ e, em seguida, clique em Project Win32 nos modelos .

      Nota No Visual Studio 2005, Visual C++ projectos é alterado para o Visual C++ .
    3. Nome do projecto LongStringDemo .
    4. No Assistente de aplicação de Win32 , clique em Definições da aplicação e, em seguida, seleccione Tipo de aplicação como Aplicação de consola .
    5. Em Opções adicionais , clique para seleccionar a caixa de verificação de Projecto vazio e, em seguida, clique em Concluir .
  2. No Solution Explorer , clique com o botão direito do rato em Ficheiros de origem e, em seguida, clique em Adicionar um novo C++ ficheiro .
  3. Nome ficheiro LongStringDemo.cpp .
  4. Adicione o código seguinte para o 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. No menu criar , clique em criar soluções .
  6. No menu Debug , clique em passo para (F11) e iniciar a depuração.
  7. No menu Debug , aponte para o Windows , aponte para Ver e, em seguida, clique em watch1 .
  8. Adicione variável szAnsiString e a variável wszWCharString à janela de monitorização. Também pode ver o valor apontando para a variável szAnsiString ou wszWCharString.
  9. Na janela de monitorização , verifique se o valor da variável szAnsiString ou wszWCharString.

Propriedades

Artigo: 326616 - Última revisão: 12 de janeiro de 2006 - Revisão: 2.0
A informação contida neste artigo aplica-se a:
  • Microsoft Visual C++ 2005 Express Edition
  • Microsoft Visual C++ .NET 2002 Standard Edition
Palavras-chave: 
kbmt kbdebug kbbug KB326616 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 326616

Submeter comentários

 

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