Acessando memória por endereço virtual

Para acessar endereços de memória ou intervalos de endereços, você pode usar vários comandos. O Visual Studio e o WinDbg fornecem elementos de interface do usuário (bem como comandos) que você pode usar para exibir e editar a memória. Para obter mais informações, consulte Exibindo e editando memória no WinDbg (clássico).

Os comandos a seguir podem ler ou gravar memória em uma variedade de formatos. Esses formatos incluem bytes hexadecimais, palavras (palavras, palavras duplas e palavras quad), inteiros (inteiros curtos, longos e quad e inteiros sem sinal), números de ponto flutuante (números de 10 bytes, 16 bytes, números reais de 32 bytes e 64 bytes) e caracteres ASCII.

Você pode usar os seguintes comandos para lidar com tipos de dados mais especializados:

  • O comando dt (Tipo de Exibição) localiza uma variedade de tipos de dados e exibe estruturas de dados que foram criadas pelo aplicativo que está sendo depurado. Esse comando é altamente versátil e tem muitas variações e opções.

  • O comando ds, dS (Cadeia de Caracteres de Exibição) exibe uma estrutura de dados STRING, ANSI_STRING ou UNICODE_STRING.

  • O comando dl (Exibir Lista Vinculada) rastreia e exibe uma lista vinculada.

  • O comando d*s (Exibir Palavras e Símbolos) localiza palavras duplas ou quad-words que podem conter informações de símbolo e exibe os dados e as informações do símbolo.

  • O comando !address extension exibe informações sobre as propriedades da memória localizadas em um endereço específico.

Você pode usar os seguintes comandos para manipular intervalos de memória:

Na maioria das situações, esses comandos interpretam seus parâmetros no radix atual. Portanto, você deve adicionar 0x antes de endereços hexadecimais se o radix atual não for 16. No entanto, a saída de exibição desses comandos normalmente está no formato hexadecimal, independentemente do radix atual. (Para obter mais informações sobre a saída, consulte os tópicos de comando individuais.) A janela Memória exibe inteiros e números reais no formato decimal e exibe outros formatos no formato hexadecimal.

Para alterar o radix padrão, use o comando n (Definir Base numérica ). Para converter rapidamente números de uma base para outra, use o ? (Avaliar expressão) ou o comando .formats (Mostrar Formatos de Número).

Quando você está executando a depuração do modo de usuário, o significado dos endereços virtuais é determinado pelo processo atual. Quando você está executando a depuração do modo kernel, o significado dos endereços virtuais pode ser controlado pelo depurador. Para obter mais informações, consulte Contexto do processo.