Módulos

Una imagen es un archivo ejecutable, dll o controlador que Windows ha cargado como parte de un proceso en modo de usuario o el kernel. El archivo desde el que se cargó la imagen se conoce como archivo de imagen.

El motor del depurador almacena en caché una lista de módulos para cada proceso (o, en modo kernel, el proceso virtual). Normalmente, cada módulo de esta lista representa una imagen en el proceso. La lista de módulos del motor se puede sincronizar con el destino mediante Recarga.

Nota En la depuración en modo kernel, la lista de módulos del motor para el proceso virtual contiene los módulos en modo kernel de todo el sistema y los módulos en modo de usuario del proceso actual.

Un módulo se puede especificar mediante su dirección base en el espacio de direcciones virtuales del destino o por su índice en la lista de módulos que mantiene el motor para el destino. El índice del módulo es igual a su posición en la lista de módulos y, por tanto, este índice cambiará si se descarga un módulo con un índice inferior. Todos los módulos descargados tienen índices; siempre son mayores que los índices de los módulos cargados. La dirección base de un módulo no cambiará siempre y cuando permanezca cargada; en algunos casos, puede cambiar si el módulo se descarga y, a continuación, se vuelve a cargar.

El índice es un número entre cero y el número de módulos del destino menos uno. El número de módulos del proceso actual se puede encontrar llamando a GetNumberModules.

El índice se puede usar para buscar la dirección base llamando a GetModuleByIndex. La dirección base de un módulo que posee un símbolo con un nombre determinado se puede encontrar mediante GetSymbolModule.

Los métodos siguientes devuelven el índice y la dirección base del módulo especificado:

  • Para buscar un módulo con un nombre de módulo determinado, use GetModuleByModuleName.

  • GetModuleByOffset devuelve el módulo cuyo intervalo de direcciones virtuales contiene una dirección determinada. Este método se puede usar para buscar el índice del módulo según la dirección base del módulo.

Los métodos siguientes devuelven información sobre los módulos especificados por la dirección base o el índice:

Módulos descargados

Durante la depuración en modo de usuario, solo se realiza un seguimiento de los módulos descargados en Windows Server 2003 y versiones posteriores de Windows. Las versiones anteriores de Windows solo realizan un seguimiento de los módulos descargados en modo kernel. Cuando se realiza el seguimiento, se indexan después de los módulos cargados. Por lo tanto, cualquier método que busque los módulos del destino buscará en todos los módulos cargados y, a continuación, los módulos descargados. Los módulos descargados se pueden usar para analizar los errores causados por un intento de llamar al código descargado.

Módulos sintéticos

Los módulos sintéticos se pueden crear como una manera de etiquetar una región de memoria. Estos módulos no pueden contener símbolos reales, pero pueden contener símbolos sintéticos. El método AddSyntheticModule crea un nuevo módulo sintético. Los módulos sintéticos se pueden quitar mediante RemoveSyntheticModule. Al volver a cargar todos los módulos del destino, se eliminan todos los módulos sintéticos.

Ruta de acceso de la imagen

El motor usa la ruta de acceso de la imagen ejecutable al buscar imágenes ejecutables.

La ruta de acceso de la imagen ejecutable puede constar de varios directorios separados por punto y coma (;). Estos directorios se buscan en orden.

Para obtener información general sobre la ruta de acceso de la imagen ejecutable, consulte Ruta de acceso de la imagen ejecutable.

Para agregar un directorio a la ruta de acceso de la imagen ejecutable, use el método AppendImagePath. GetImagePath devuelve toda la ruta de acceso de la imagen ejecutable y se puede cambiar mediante SetImagePath.

Información adicional

Para obtener más información sobre los procesos y los procesos virtuales, vea Subprocesos y procesos.