Condividi tramite


Uso dei comandi di estensione del debugger

L'uso dei comandi di estensione del debugger è molto simile all'uso dei comandi del debugger. Il comando viene digitato nella finestra Comando debugger, generando output in questa finestra o una modifica nell'applicazione di destinazione o nel computer di destinazione.

Un comando di estensione del debugger effettivo è un punto di ingresso in una DLL chiamata dal debugger.

Le estensioni del debugger vengono richiamate dalla sintassi seguente:

! [module.]extension[arguments]

Il nome del modulo non deve essere seguito con l'estensione del nome file .dll. Se il modulo include un percorso completo, il limite predefinito per le dimensioni della stringa è di 255 caratteri.

Se il modulo non è già stato caricato, verrà caricato nel debugger usando una chiamata a LoadLibrary(module). Dopo che il debugger ha caricato la libreria di estensioni, chiama la funzione GetProcAddress per individuare il nome dell'estensione nel modulo di estensione. Il nome dell'estensione fa distinzione tra maiuscole e minuscole e deve essere immesso esattamente come appare nel file def del modulo di estensione. Se viene trovato l'indirizzo dell'estensione, viene chiamata l'estensione.

Ordine di ricerca

Se il nome del modulo non è specificato, il debugger cercherà i moduli di estensione caricati per questa esportazione.

L'ordine di ricerca predefinito è il seguente:

  1. I moduli di estensione che funzionano con tutti i sistemi operativi e in entrambe le modalità: Dbghelp.dll e winext\ext.dll.

  2. Modulo di estensione che funziona in tutte le modalità, ma è specifico del sistema operativo. Per Windows XP e versioni successive di Windows, si tratta di winxp\exts.dll.

  3. Modulo di estensione che funziona con tutti i sistemi operativi, ma è specifico della modalità. Per la modalità kernel, si tratta di winext\kext.dll. Per la modalità utente, si tratta di winext\uext.dll.

  4. Modulo di estensione specifico del sistema operativo e specifico della modalità. Nella tabella seguente viene specificato questo modulo.

Modalità utente Modalità kernel
winxp \ ntsdexts.dll winxp \ kdexts.dll

Quando un modulo di estensione viene scaricato, viene rimosso dalla catena di ricerca. Quando viene caricato un modulo di estensione, viene aggiunto all'inizio dell'ordine di ricerca. Il comando .setdll (Imposta DLL estensione predefinita) può essere usato per alzare di livello qualsiasi modulo all'inizio della catena di ricerca. Usando questo comando ripetutamente, è possibile controllare completamente la catena di ricerca.

Usare il comando .chain (List Debugger Extensions) per visualizzare un elenco di tutti i moduli di estensione caricati nell'ordine di ricerca corrente.

Se si tenta di eseguire un comando di estensione che non si trova in nessuno dei moduli di estensione caricati, verrà visualizzato un messaggio di errore Esporta non trovato.