Erro: O depurador Visual C++ .NET ou Visual C++ 2005 não pode exibir variáveis std::string e std::wstring corretamente

Traduções deste artigo Traduções deste artigo
ID do artigo: 326616 - Exibir os produtos aos quais esse artigo se aplica.
Aviso
Expandir tudo | Recolher tudo

Neste artigo

Sintomas

O depurador não pode exibir valores apropriadamente para as seguintes seqüências:
  • std::String variáveis, se o comprimento da seqüência de caracteres for maior do que 15 caracteres.
  • std::wstring variáveis, se o comprimento da seqüência de caracteres for menor do que 15 caracteres.

Causa

A variável std::string ou std::wstring é armazenada como buffer estático se o tamanho for menor do que 15 caracteres. Se o comprimento da seqüência de caracteres é maior que 15 caracteres, a seqüência de caracteres é armazenada como um ponteiro para a memória.

Você pode modificar o arquivo autoexp.dat para controlar a exibição do depurador de variável std::string. O membro _Bx._Buf é usado para especificar std::string armazenados como buffer estático. O membro _Bx._Ptr é usado 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 arquivo autoexp.dat, o depurador não exibe as variáveis std::string que tem comprimento maior do que 15 caracteres. Ao membro _Bx._Buf não for especificado para std::wstring no arquivo autoexp.dat, o depurador não exibe as variáveis std::wstring que têm comprimento menor do que 15 caracteres.

Resolução

O componente do depurador que exibe valores de variáveis é conhecido como avaliador de expressão (EE). Uma instância do EE lida com o código nativo, e a outra instância lida com o código gerenciado. O arquivo autoexp.dat fornece personalização para EE nativo e o arquivo Mcee_mc.dat fornece personalização do EE gerenciado. Para resolver esse problema, modifique o autoexp.dat arquivo.

Para modificar o arquivo autoexp.dat, siga estas etapas:
  1. Abra o bloco de notas ou outro editor de texto.
  2. Abra o arquivo autoexp.dat da pasta c:\Arquivos de Programas\Microsoft Visual Studio .NET\Common7\Packages\Debugger.
  3. No arquivo 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 na etapa 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>

Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados no começo deste artigo.

Mais Informações

Passos para reproduzir o problema

  1. Crie um novo projeto Visual C++ Win32:
    1. No menu arquivo , clique em novo .
    2. Em Project Types , clique em Projetos do Visual c++ e clique em Projeto Win32 em modelos .

      Observação No Visual Studio 2005, Visual C++ Projects é alterado para Visual C++ .
    3. Nomeie o projeto LongStringDemo .
    4. No Assistente para aplicativos do Win32 , clique em Configurações do aplicativo e, em seguida, selecione Tipo de aplicativo como Aplicativo de console .
    5. Em Opções adicionais , clique para selecionar a caixa de seleção Projeto vazio e, em seguida, clique em Concluir .
  2. No Solution Explorer , clique Source Files com o botão direito do mouse e, em seguida, clique em Adicionar um novo C++ arquivo .
  3. O nome do arquivo LongStringDemo.cpp .
  4. Adicione o seguinte código 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 Build , clique em Build Solution .
  6. No menu Debug , clique em Step Into (F11) e iniciar a depuração.
  7. No menu Debug , aponte para Windows , aponte para Inspeção e, em seguida, clique em watch1 .
  8. Adicione a variável szAnsiString e a variável wszWCharString para a janela watch. Você também pode observar o valor apontando para a variável szAnsiString ou wszWCharString.
  9. Na janela Watch , verifique se o valor da variável szAnsiString ou wszWCharString.

Propriedades

ID do artigo: 326616 - Última revisão: quinta-feira, 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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes 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