Exibir código de desmontagem no depurador do Visual Studio (C#, C++, Visual Basic, F#)

A janela Desmontagem mostra o código assembly correspondente às instruções criadas pelo compilador. Se você estiver depurando código gerenciado, essas instruções de assembly correspondem ao código nativo criado pelo compilador JIT (just-in-time), não a MSIL (linguagem intermediária da Microsoft) gerada pelo compilador do Visual Studio.

Observação

Para aproveitar ao máximo a janela Desmontagem, entenda ou saiba quais são os conceitos básicos da programação em linguagem assembly. O material de referência para conjuntos de instruções Intel é encontrado no 2º volume dos manuais de arquitetura. Esse material geralmente se aplica aos conjuntos de instruções AMD também.

Esse recurso só estará disponível se a depuração no nível do endereço estiver habilitada. Ele não está disponível para depuração de SQL ou script.

Além das instruções de assembly, a janela Desmontagem pode mostrar as seguintes informações opcionais:

  • Endereço de memória onde cada instrução está localizada. Para aplicativos nativos, é o endereço de memória real. No Visual Basic ou C#, é um deslocamento do início da função.

  • O código-fonte do qual o código do assembly deriva.

  • Bytes de código, ou seja, as representações de bytes do computador real ou instruções da MSIL.

  • Nomes do símbolo para os endereços de memória.

  • Números de linha que correspondem ao código-fonte.

As instruções da linguagem de assembly consistem em mnemônicos, que são abreviações de nomes de instrução e símbolos para variáveis, registros e constantes. Cada instrução em linguagem de máquina é representada por um mnemônico de assembly da linguagem, opcionalmente seguido por um ou mais símbolos.

O código assembly depende muito de registros do processador ou, no código gerenciado, registros da Common Language Runtime. Você pode usar a janela Desmontagem junto com a janela Registros, que permite examinar o conteúdo do Registro.

Para exibir instruções em código de máquina em sua forma numérica bruta, em vez de como linguagem assembly, use a janela Memória ou selecione Bytes de Código no menu de atalho na janela Desmontagem.

Usar a janela Desmontagem

Para habilitar a janela Desmontagem, em Ferramentas>Opções>Depuração, selecione Habilitar depuração de nível de endereço.

Para abrir a janela Desmontagem durante a depuração, selecione Janelas>Desmontagem ou pressione Alt+8.

Observação

As caixas de diálogo e os comandos de menu encontrados podem diferir daqueles descritos na Ajuda, dependendo das configurações ativas ou edição. Para alterar suas configurações, selecione Importar e Exportar Configurações no menu Ferramentas . Para obter mais informações, confira Redefinir todas as configurações.

Para ativar ou desativar informações opcionais, clique com o botão direito do mouse na janela Desmontagem e marque ou desmarque as opções desejadas no menu de atalho.

Uma seta amarela na margem esquerda marca o local do ponto de execução atual. Para o código nativo, o ponto de execução corresponde ao contador do programa da CPU. Este local mostra a próxima instrução que será executada em seu programa.

Mover para cima ou para baixo na memória

Quando exibe conteúdos de memória na janela de Memória ou na janela de Desmontagem, você pode usar a barra de rolagem vertical para mover para cima ou para baixo no espaço de memória.

  1. Para rolar a página para baixo (mover para um endereço de memória superior), clique na barra de rolagem vertical, abaixo da caixa de rolagem.

  2. Para rolar a página para cima (mover para um endereço de memória inferior), clique na barra de rolagem vertical, acima do elevador.

    Você também notará que a barra de rolagem vertical opera de maneira não padrão. O espaço para endereço de um computador moderno é muito grande e é fácil perder-se ao segurar o elevador da barra de rolagem e arrastá-lo a um local aleatório. Por esse motivo, o elevador é "carregado" e sempre permanece no centro da barra de rolagem. Em aplicativos de código nativo, você pode rolar a página para cima ou para baixo, mas não pode rolar livremente.

    Em aplicativos gerenciados, a desmontagem é limitada a uma função e você pode rolar normalmente.

    Você observará que os endereços superiores aparecem na parte inferior da janela. Para exibir um endereço superior, você deve rolar para baixo, não para cima.

Mover uma instrução para cima ou para baixo

  • Clique na seta na parte superior ou inferior da barra de rolagem vertical.