Visualización del código de desensamblado en el depurador de Visual Studio (C#, C++, Visual Basic, F#)

En la ventana Desensamblado se muestra el código de ensamblado correspondiente a las instrucciones creadas por el compilador. Si depura código administrado, estas instrucciones de ensamblado se corresponden al código nativo creado por el compilador JIT y no al lenguaje intermedio de Microsoft (MSIL) que genera el compilador de Visual Studio.

Nota

Para sacar el máximo partido de la ventana Desensamblado, infórmese bien sobre los conceptos básicos de la programación del lenguaje de ensamblado. El material de referencia para los conjuntos de instrucciones Intel se encuentra en el segundo volumen de losmanuales de arquitectura. Este material se aplica generalmente también a los conjuntos de instrucciones AMD.

Esta característica solo está disponible si está habilitada la depuración en el nivel de dirección. No está disponible para la depuración de scripts ni de SQL.

Además de las instrucciones de ensamblado, la ventana Desensamblado puede mostrar la siguiente información opcional:

  • Dirección de memoria donde se encuentra cada instrucción máquina. Para aplicaciones nativas, esta es la dirección de memoria real. Para Visual Basic o C#, es un desplazamiento desde el inicio de la función.

  • Código fuente del que se deriva el código ensamblado.

  • Bytes de código, esto es, representaciones en bytes de las instrucciones máquina o MSIL reales.

  • Nombres de símbolos para las direcciones de memoria.

  • Número de líneas correspondiente al código fuente.

Las instrucciones en lenguaje de ensamblado constan de mnemónicos, que son abreviaturas de nombres de instrucciones, y de símbolos para variables, registros y constantes. Cada instrucción de código máquina se representa con un mnemónico de lenguaje de ensamblado, opcionalmente seguido de uno o más símbolos.

El código de ensamblado se basa en gran medida en registros de procesador o, en el caso de código administrado, en registros de Common Language Runtime. Puede usar la ventana Desensamblado junto con la ventana Registros, que le permite examinar el contenido de los registros.

Para ver las instrucciones de código máquina en forma numérica sin formato, en lugar de como lenguaje de ensamblado, use la ventana Memoria o seleccione Bytes de código en el menú contextual de la ventana Desensamblado.

Uso de la ventana Desensamblado

Para habilitar la ventana Desensamblado, en Herramientas>Opciones>Depuración, seleccione Habilitar la depuración de nivel de dirección.

Para abrir la ventana Desensamblado durante la depuración, seleccione Windows>Desensamblado o presione Alt+8.

Nota

Los cuadros de diálogo y comandos de menú que se ven pueden diferir de los descritos en la Ayuda, en función de los valores de configuración o de edición activos. Para cambiar la configuración, elija la opción Importar y exportar configuraciones del menú Herramientas . Para obtener más información, vea Restablecer toda la configuración.

Para activar o desactivar información opcional, haga clic con el botón secundario en la ventana Desensamblado y active o desactive las opciones que desee en el menú contextual.

Una flecha amarilla en el margen izquierdo indica el punto de ejecución actual. Para el código nativo, el punto de ejecución se corresponde con el contador de programas de la CPU. Esta ubicación indica la instrucción que debe ejecutarse a continuación en el programa.

Retroceder o avanzar en la memoria

Mientras consulta el contenido de la memoria en una ventana Memoria o en la ventana Desensamblado, puede utilizar la barra de desplazamiento vertical para moverse hacia arriba o abajo en el espacio de memoria.

  1. Para avanzar (moverse a una dirección de memoria alta), haga clic en la barra de desplazamiento vertical debajo del cuadro de desplazamiento.

  2. Para retroceder (moverse a una dirección de memoria baja), haga clic en la barra de desplazamiento vertical encima del cuadro de desplazamiento.

    Observará que la barra de desplazamiento vertical funciona de un modo distinto al habitual. El espacio de direcciones de memoria de un equipo moderno es muy grande, por lo que resultaría muy fácil perderse al arrastrar el cuadro de desplazamiento a una ubicación aleatoria. Por este motivo, el cuadro de desplazamiento se comporta como un resorte y siempre permanece en el centro de la barra de desplazamiento. En las aplicaciones en código nativo, puede retroceder o avanzar una página, pero no puede desplazarse libremente por la ventana.

    En las aplicaciones administradas, el desensamblado se limita a una función y el desplazamiento se puede realizar normalmente.

    Verá que las direcciones altas aparecen en la parte inferior de la ventana. Para ver una dirección alta, debe desplazarse hacia abajo, no hacia arriba.

Subir o bajar una instrucción

  • Haga clic en la flecha situada en la parte superior o inferior de la barra de desplazamiento vertical.