Uso de las ventanas de memoria del depurador de Visual Studio (C#, C++, Visual Basic y F#)
Durante la depuración, la ventana Memoria muestra el espacio de memoria que usa la aplicación.
Las ventanas del depurador, como Inspección, Automático, Variables locales y el cuadro de diálogo Inspección rápida, muestran variables, que se almacenan en ubicaciones específicas de la memoria. La ventana Memoria muestra la imagen general. Esta vista de memoria es conveniente para examinar grandes conjuntos de datos (búferes de cadenas largas, por ejemplo), que no se muestran adecuadamente en las demás ventanas.
La ventana Memoria no se limita a mostrar datos. Muestra todo lo que hay en el espacio de memoria, ya sean datos, código o bits aleatorios de la memoria no asignada.
La ventana Memoria no está disponible para la depuración de scripts ni de SQL. Esos lenguajes no reconocen el concepto de memoria.
Apertura de una ventana Memoria
Al igual que otras ventanas del depurador, las ventanas Memoria solo están disponibles durante una sesión de depuración.
Importante
Para habilitar las ventanas Memoria, la casilla Habilitar la depuración de nivel de dirección debe estar activada en Herramientas>Opciones (o Depurar>Opciones) >Depuración>General.
Para abrir una ventana Memoria
Asegúrese de que la casilla Habilitar la depuración de nivel de dirección esté activada en Herramientas>Opciones (o Depurar>Opciones) >Depuración>General.
Para iniciar la depuración, seleccione la flecha verde, presione F5 o seleccione Depurar>Iniciar depuración.
En Depurar>Windows>Memoria, seleccione Memoria 1, Memoria 2, Memoria 3 o Memoria 4. (Algunas ediciones de Visual Studio ofrecen solo una ventana Memoria).
Desplazamiento por la ventana Memoria
El espacio de direcciones de un equipo es grande y puede perder su lugar fácilmente al desplazarse por la ventana Memoria.
Las direcciones de memoria más altas aparecen en la parte inferior de la ventana. Para ver una dirección más alta, desplácese hacia abajo. Para ver una dirección más baja, desplácese hacia arriba.
Para ir a una dirección especificada de forma instantánea en la ventana Memoria, use arrastrar y colocar, o bien escriba la dirección en el campo Dirección. El campo Dirección acepta direcciones alfanuméricas y expresiones que se evalúan como direcciones, tales como e.User.NonroamableId
.
Para forzar la reevaluación inmediata de una expresión en el campo Dirección, seleccione el icono de flecha redondeada Volver a evaluar automáticamente.
De manera predeterminada, la ventana Memoria trata las expresiones de Dirección como expresiones dinámicas, que se vuelven a evaluar a medida que se ejecuta la aplicación. Las expresiones dinámicas pueden ser útiles, por ejemplo, para ver la memoria tocada por una variable de puntero.
Para usar la función de arrastrar y colocar a fin de desplazarse a una ubicación de memoria:
En cualquier ventana de depurador, seleccione una dirección de memoria o una variable de puntero que contenga una dirección de memoria.
Arrastre y coloque la dirección o el puntero en la ventana Memoria. A continuación, la dirección aparece en el campo Dirección y la ventana Memoria se ajusta para mostrarla en la parte superior.
Para ir a una ubicación de memoria escribiéndola en el campo Dirección:
- Escriba o pegue la dirección o expresión en el campo Dirección y presione Entrar, o bien elíjala en la lista desplegable del campo Dirección. La ventana Memoria se ajusta para mostrar esa dirección en la parte superior.
Personalización de la ventana Memoria
De forma predeterminada, el contenido de la memoria aparece como números enteros de 1 byte en formato hexadecimal, y el ancho de la ventana determina el número de columnas que se muestra. Puede personalizar el modo en que la ventana Memoria muestra el contenido de la memoria.
Para cambiar el formato del contenido de la memoria:
- Haga clic con el botón derecho en la ventana Memoria y elija los formatos que quiera en el menú contextual.
Para cambiar el número de columnas de la ventana Memoria:
- Seleccione la flecha desplegable situada junto al campo Columnas y seleccione el número de columnas que quiera mostrar, o bien seleccione Automático para que se ajuste automáticamente en función del ancho de la ventana.
Si no quiere que el contenido de la ventana Memoria cambie conforme se ejecute la aplicación, puede desactivar la evaluación de las expresiones dinámicas.
Para activar o desactivar la evaluación en directo:
Haga clic con el botón derecho en la ventana Memoria y seleccione Volver a evaluar automáticamente en el menú contextual.
Nota
La evaluación de expresiones dinámicas es un comando de alternancia y está activada de forma predeterminada, por lo que se desactiva al seleccionar Volver a evaluar automáticamente. Al seleccionar Volver a evaluar automáticamente, se vuelve a activar.
Se puede ocultar o mostrar la barra de herramientas en la parte superior de la ventana Memoria. No tendrá acceso al campo Dirección ni a otras herramientas si la barra de herramientas esté oculta.
Para mostrar u ocultar la barra de herramientas:
- Haga clic con el botón derecho en la ventana Memoria y seleccione Mostrar barra de herramientas en el menú contextual. La barra de herramientas aparece o desaparece según su estado anterior.
Seguimiento de un puntero a través de la memoria (C/C++)
En las aplicaciones de código nativo, puede utilizar nombres de registro como expresiones dinámicas. Por ejemplo, puede utilizar el puntero de la pila para realizar un seguimiento de la pila.
Para seguir un puntero a través de la memoria:
En el campo Dirección de la ventana Memoria, escriba una expresión de puntero que esté en el ámbito actual. Dependiendo del lenguaje que utilice, quizá tenga que desreferenciar esta variable.
Presione ENTRAR.
Al usar un comando de depuración, como Depurar paso a paso por instrucciones, la dirección de memoria que se muestra en el campo Dirección y en la parte superior de la ventana Memoria cambia automáticamente a medida que también lo hace el puntero.
Visualización de punteros de memoria (.NET)
Si desea ver el contenido de un objeto .NET basado en un puntero de memoria, como una dirección obtenida de una instantánea del montón, puede hacerlo mediante la notación {CLR}@Address
. La dirección debe ser un puntero a la memoria, como 0x1D102A581B0. Utilice la notación {CLR}@Address
para escribir el puntero de memoria en el campo Dirección de la ventana Memoria. Como alternativa, puede usar la misma notación para agregar una inspección mediante la ventana Inspección.
Para obtener la dirección del puntero de memoria de una instantánea del montón, abra el volcado de montón y elija Depurar memoria administrada, que abre la herramienta Uso de memoria. Haga clic con el botón derecho en el objeto que le interesa y elija Ver instancias.