Usar as janelas Memória no depurador do Visual Studio (C#, C++, Visual Basic, F#)
Durante a depuração, a janela Memória mostra o espaço de memória que seu aplicativo está usando.
Janelas de depurador como Watch, Autos,Locals e a caixa de diálogo QuickWatch mostram variáveis, que são armazenadas em locais específicos na memória. A janela Memória mostra a imagem geral. A exibição de memória é conveniente para examinar grandes partes de dados (buffers ou cadeias de caracteres grandes, por exemplo) que não são exibidas bem nas outras janelas.
A janela Memória não se limita à exibição de dados. Ela exibirá tudo no espaço de memória, incluindo dados, código e bits aleatórios de lixo na memória não atribuída.
A janela Memória não está disponível para script ou depuração de SQL. Esses idiomas não reconhecem o conceito de memória.
Abrir uma janela Memória
Assim como outras janelas do depurador, as janelas Memória só estão disponíveis durante uma sessão de depuração.
Importante
Para habilitar as janelas Memória, Habilitar depuração no nível do endereço deve ser selecionado em Ferramentas>Opções (ou Depurar>Options) >Depuração>Geral.
Para abrir uma janela de memória
Verifique se Habilitar depuração no nível de endereço está selecionado em Ferramentas>Opções (ou Depurar>Opções) >Depuração>Geral.
Inicie a depuração selecionando a seta verde, pressionando F5 ou selecionando Depurar>Iniciar Depuração.
Em Depurar>Windows>Memória, selecione Memória 1, Memória 2, Memória 3, ou Memória 4. (Algumas edições do Visual Studio oferecem apenas uma janela Memória)
Mover-se na janela Memória
O espaço de endereço de um computador é grande e você pode facilmente se perder rolando na janela Memória.
Um endereço de memória mais alto aparece na parte inferior da janela. Para exibir um endereço superior, role para baixo. Para exibir um endereço inferior, role para cima.
Você pode ir instantaneamente para um endereço especificado na janela Memória usando arrastar e soltar ou inserindo o endereço no campo Endereço. O campo Endereço aceita endereços alfanuméricos e expressões que são avaliadas como endereços, como e.User.NonroamableId
.
Para forçar a reavaliação imediata de uma expressão no campo Endereço, selecione o ícone de reavaliaçãoReavaliar Automaticamente.
Por padrão, a janela Memória trata expressões de Endereço como expressões dinâmicas, que são reavaliadas à medida que o aplicativo é executado. Expressões dinâmicas podem ser úteis, por exemplo, para exibir a memória tocada por uma variável de ponteiro.
Para usar arrastar e soltar para mover para um local de memória:
Em qualquer janela do depurador, selecione um endereço de memória ou uma variável de ponteiro que contenha um endereço de memória.
Arraste o endereço ou ponteiro para a janela Memória. Em seguida, esse endereço aparece no campo Endereço e a janela Memória é ajustada para exibir esse endereço na parte superior.
Para mover para um local de memória inserindo-o no campo Endereço:
- Digite ou cole o endereço ou expressão no campo Endereço e pressione Enter ou escolha-o na lista suspensa no campo Endereço. A janela Memória é ajustada para exibir esse endereço na parte superior.
Personalizar a janela Memória
Por padrão, o conteúdo da memória aparece como inteiros de 1 byte no formato hexadecimal e a largura da janela determina o número de colunas mostradas. Você pode personalizar a maneira como a janela Memória mostra o conteúdo da memória.
Para alterar o formato do conteúdo de memória:
- Clique com o botão direito do mouse na janela Memória e escolha os formatos desejados no menu de contexto.
Para alterar o número de colunas na janela de memória:
- Selecione a seta suspensa ao lado do campo Colunas e selecione o número de colunas a serem exibidas, ou selecione Automático para ajuste automático com base na largura da janela.
Se não quiser que o conteúdo da janela Memória seja alterado à medida que seu programa é executado, você poderá desativar a avaliação da expressão dinâmica.
Para ativar/desativar a avaliação dinâmica:
Clique com o botão direito do mouse na janela Memória e selecione Reavaliar Automaticamente no menu de contexto.
Observação
A avaliação de expressão dinâmica é uma alternância e está ativada por padrão, portanto, selecionar Reavaliar automaticamente a desativa. Selecionar Reavaliar Automaticamente a ativa novamente.
Você pode ocultar ou exibir a barra de ferramentas na parte superior da janela Memória. Você não terá acesso ao campo Endereço ou outras ferramentas quando a barra de ferramentas estiver oculta.
Para ativar/desativar a barra de ferramentas:
- Clique com o botão direito do mouse na janela Memória e selecione Mostrar Barra de Ferramentas no menu de contexto. A barra de ferramentas é exibida ou desaparece, dependendo do seu estado anterior.
Seguir um ponteiro pela memória (C/C++)
Em aplicativos de código nativo, você poderá usar nomes de registro como expressões dinâmicas. Por exemplo, você pode usar o ponteiro de pilhas para seguir a pilha.
Para seguir um ponteiro pela memória:
No campo Endereço da janela Memória, insira uma expressão de ponteiro que esteja no escopo atual. Dependendo da linguagem, você poderá ter que remover a referência a ele.
Pressione Enter.
Quando você usa um comando de depuração, como Etapa, o endereço de memória exibido no campo Endereço e na parte superior da janela Memória é alterado automaticamente conforme o ponteiro é alterado.
Exibir ponteiros de memória (.NET)
Se você deseja exibir o conteúdo de um objeto .NET com base em um ponteiro de memória, como um endereço obtido de um instantâneo de heap, você pode fazer isso usando a notação {CLR}@Address
. O endereço precisa ser um ponteiro para a memória, como 0x1D102A581B0. Insira o ponteiro de memória usando a notação {CLR}@Address
no campo Endereço da janela Memória. Como alternativa, você pode usar a mesma notação para adicionar um relógio usando a janela Inspeção.
Para obter o endereço do ponteiro de memória de um instantâneo de heap, abra o despejo de pilha, escolha Depurar Memória Gerenciada, que abre a ferramenta Uso de Memória. Clique com o botão direito do mouse no objeto no qual você está interessado e escolha Exibir instâncias.