Moduli

Un'immagine è un eseguibile, una DLL o un driver caricato da Windows come parte di un processo in modalità utente o del kernel. Il file da cui è stata caricata l'immagine viene definito file di immagine.

Il motore del debugger memorizza nella cache un elenco di moduli per ogni processo (o, in modalità kernel, il processo virtuale). In genere ogni modulo in questo elenco rappresenta un'immagine nel processo. L'elenco dei moduli del motore può essere sincronizzato con la destinazione usando Ricarica.

Nota Nel debug in modalità kernel, l'elenco dei moduli del motore per il processo virtuale contiene sia i moduli in modalità kernel a livello di sistema che i moduli in modalità utente del processo corrente.

Un modulo può essere specificato dal relativo indirizzo di base nello spazio indirizzi virtuale della destinazione o dal relativo indice nell'elenco dei moduli gestiti dal motore per la destinazione. L'indice del modulo è uguale alla relativa posizione nell'elenco dei moduli e pertanto questo indice cambierà se un modulo con un indice inferiore viene scaricato. Tutti i moduli scaricati hanno indici; questi valori sono sempre superiori agli indici dei moduli caricati. L'indirizzo di base di un modulo non cambierà finché rimane caricato; in alcuni casi può cambiare se il modulo viene scaricato e quindi ricaricato.

L'indice è un numero compreso tra zero e il numero di moduli nella destinazione meno uno. Il numero di moduli nel processo corrente è reperibile chiamando GetNumberModules.

L'indice può essere usato per trovare l'indirizzo di base chiamando GetModuleByIndex. L'indirizzo di base di un modulo proprietario di un simbolo con un nome specificato è disponibile usando GetSymbolModule.

I metodi seguenti restituiscono sia l'indice che l'indirizzo di base del modulo specificato:

  • Per trovare un modulo con un nome di modulo specificato, usare GetModuleByModuleName.

  • Il modulo il cui intervallo di indirizzi virtuali contiene un determinato indirizzo viene restituito da GetModuleByOffset. Questo metodo può essere usato per trovare l'indice del modulo in base all'indirizzo di base del modulo.

I metodi seguenti restituiscono informazioni sui moduli specificati dall'indirizzo di base o dall'indice:

Moduli scaricati

Durante il debug in modalità utente, i moduli scaricati vengono rilevati solo in Windows Server 2003 e versioni successive di Windows. Le versioni precedenti di Windows tengono traccia solo dei moduli scaricati in modalità kernel. Quando vengono rilevati, vengono indicizzati dopo i moduli caricati. Di conseguenza, qualsiasi metodo che esegue ricerche nei moduli di destinazione cercherà tutti i moduli caricati e quindi i moduli scaricati. I moduli scaricati possono essere usati per analizzare gli errori causati da un tentativo di chiamare codice scaricato.

Moduli sintetici

I moduli sintetici possono essere creati come metodo per etichettare un'area di memoria. Questi moduli non possono contenere simboli reali, ma possono contenere simboli sintetici. Il metodo AddSyntheticModule crea un nuovo modulo sintetico. I moduli sintetici possono essere rimossi usando RemoveSyntheticModule. Ricaricando tutti i moduli nella destinazione vengono eliminati tutti i moduli sintetici.

Percorso immagine

Il percorso dell'immagine eseguibile viene usato dal motore durante la ricerca di immagini eseguibili.

Il percorso dell'immagine eseguibile può essere costituito da diverse directory separate da punto e virgola (;). Queste directory vengono cercate in ordine.

Per una panoramica del percorso dell'immagine eseguibile, vedere Percorso immagine eseguibile.

Per aggiungere una directory al percorso dell'immagine eseguibile, usare il metodo AppendImagePath. L'intero percorso dell'immagine eseguibile viene restituito da GetImagePath e può essere modificato tramite SetImagePath.

Informazioni aggiuntive

Per altre informazioni sui processi e sui processi virtuali, vedere Thread e processi.