Acceso a la memoria por dirección virtual
Para acceder a direcciones de memoria o intervalos de direcciones, puede usar varios comandos. Visual Studio y WinDbg proporcionan elementos de interfaz de usuario (así como comandos) que puede usar para ver y editar la memoria. Para obtener más información, vea Visualización y edición de memoria en WinDbg (clásico).
Los siguientes comandos pueden leer o escribir memoria en diversos formatos. Estos formatos incluyen bytes hexadecimales, palabras (palabras, palabras dobles y cuatro palabras), enteros (enteros cortos, largos y cuáteres y enteros sin signo), números de punto flotante (10 bytes, 16 bytes, 32 bytes y números reales de 64 bytes) y caracteres ASCII.
El comando d* (Memoria para mostrar) muestra el contenido de una dirección o intervalo de memoria especificados.
El comando e* (Escribir valores) escribe un valor en la dirección de memoria especificada.
Puede usar los siguientes comandos para controlar tipos de datos más especializados:
El comando dt (Display Type) busca una variedad de tipos de datos y muestra estructuras de datos creadas por la aplicación que se está depurando. Este comando es muy versátil y tiene muchas variaciones y opciones.
El comando ds, dS (Display String) muestra una cadena, ANSI_STRING o UNICODE_STRING estructura de datos.
El comando dl (Mostrar lista vinculada) realiza un seguimiento y muestra una lista vinculada.
El comando d*s (Mostrar palabras y símbolos) busca palabras dobles o cuatro palabras que pueden contener información de símbolos y, a continuación, muestra los datos y la información del símbolo.
El comando de extensión !address muestra información sobre las propiedades de la memoria que se encuentra en una dirección específica.
Puede usar los siguientes comandos para manipular intervalos de memoria:
El comando m (Mover memoria) mueve el contenido de un intervalo de memoria a otro.
El comando f (Memoria de relleno) escribe un patrón en un intervalo de memoria, repitiéndolo hasta que el intervalo esté lleno.
El comando c (Comparar memoria) compara el contenido de dos intervalos de memoria.
El comando s (Memoria de búsqueda) busca un patrón especificado dentro de un intervalo de memoria o busca cualquier carácter ASCII o Unicode que exista en un intervalo de memoria.
El comando .holdmem (Mantener y comparar memoria) compara un intervalo de memoria con otro.
En la mayoría de las situaciones, estos comandos interpretan sus parámetros en el radix actual. Por lo tanto, debe agregar 0x antes de las direcciones hexadecimales si el radix actual no es 16. Sin embargo, la salida de visualización de estos comandos suele estar en formato hexadecimal, independientemente del radix actual. (Para obtener más información sobre la salida, consulte los temas de comandos individuales). La ventana Memoria muestra enteros y números reales en formato decimal y muestra otros formatos en formato hexadecimal.
Para cambiar el radix predeterminado, use el comando n (Set Number Base). Para convertir rápidamente números de una base a otra, use ? (Evaluar expresión) command o el comando .formats (Mostrar formatos de número).
Al realizar la depuración en modo de usuario, el significado de las direcciones virtuales viene determinado por el proceso actual. Al realizar la depuración en modo kernel, el depurador puede controlar el significado de las direcciones virtuales. Para obtener más información, vea Contexto de proceso.