Nota
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare ad accedere o a cambiare directory.
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare a cambiare directory.
Un modo per attivare Logger consiste nell'avviare CDB o WinDbg e collegarsi a un'applicazione di destinazione in modalità utente come di consueto. Usare quindi il comando !logexts.logi o !logexts.loge extension.
Verrà inserito il codice nel punto di interruzione corrente che passerà a una routine che carica e inizializza Logexts.dll nel processo dell'applicazione di destinazione. Questa operazione viene definita "inserimento di Logger nell'applicazione di destinazione".
Ci saranno effettivamente due istanze di Logexts.dll in esecuzione, poiché questo modulo è sia una DLL di estensione del debugger che il programma inserito nell'applicazione di destinazione. Il debugger e le istanze di destinazione di Logexts.dll comunicano tramite una sezione condivisa di memoria che include gli handle di file di output, la maschera di categoria corrente e un puntatore al buffer di output del registro.
Collegamento all'applicazione di destinazione
Per informazioni sul collegamento del debugger all'applicazione di destinazione, vedere Debug di un processo di User-Mode tramite WinDbg o debug di un processo di User-Mode tramite CDB.
Utilizzo dei comandi dell'estensione Logger
Per la sintassi completa di ogni estensione, vedere la relativa pagina di riferimento.
!logexts.logi
Inserisce Logger nell'applicazione di destinazione. Inizializza la registrazione, ma non la abilita.
!logexts.loge
Abilita la registrazione. Se !logexts.logi non è stato usato, questa estensione verrà inizializzata e quindi abilitata la registrazione.
!logexts.logd
Disabilita la registrazione. In questo modo tutti gli hook API verranno rimossi nel tentativo di consentire l'esecuzione del programma liberamente. Gli hook COM non vengono rimossi perché non possono essere riabilitati a piacimento.
!logexts.logo
Visualizza o modifica le opzioni di output. Sono possibili tre tipi di output: i messaggi inviati direttamente al debugger, un file di testo o un file lgv. Il file con estensione lgv contiene molte più informazioni delle altre due; può essere letto con LogViewer.
Se si disabilita l'output del file di testo, verrà comunque creato un file di dimensioni pari a zero .txt. È possibile sovrascrivere un file di testo salvato in precedenza nella stessa posizione.
!logexts.logc
Visualizza le categorie API disponibili, controlla quali categorie verranno registrate e quali non verranno registrate e visualizza le API contenute in qualsiasi categoria.
Se una categoria è disabilitata, gli hook per tutte le API in tale categoria verranno rimossi in modo che non vi sia più alcun sovraccarico delle prestazioni. Gli hook COM non vengono rimossi poiché non possono essere riabilitati a piacimento.
L'abilitazione di determinate categorie può essere utile solo quando si è interessati solo a un particolare tipo di interazione che il programma ha con Windows, ad esempio le operazioni sui file. Ciò riduce le dimensioni del file di log e riduce anche l'effetto che Logger ha sulla velocità di esecuzione del processo.
!logexts.logb
Visualizza o svuota il buffer di output corrente. Per una migliore gestione delle prestazioni, l'output del log viene scaricato su disco solo quando il buffer di output è pieno. Per impostazione predefinita, il buffer è di 2144 byte.
Poiché la memoria del buffer è gestita dall'applicazione di destinazione, la scrittura automatica del buffer nei file di log sul disco non si verificherà se si verifica una violazione di accesso o un altro errore non ripristinabile nell'applicazione di destinazione. In questi casi, è consigliabile usare questo comando per scaricare manualmente il buffer sul disco oppure le API registrate più di recente potrebbero non essere visualizzate nei file di log.
!logexts.logm
Visualizza o crea un elenco di inclusione/esclusione del modulo. Spesso è consigliabile registrare solo le chiamate API effettuate da un determinato modulo o set di moduli. Per semplificare questa operazione, Logger consente di specificare un elenco di inclusione del modulo o, in alternativa, un elenco di esclusione dei moduli. Ad esempio, si userebbe un elenco di inclusione se si desidera registrare solo le chiamate da uno o due moduli. Se si desidera registrare le chiamate effettuate da tutti i moduli ad eccezione di un breve elenco di moduli, si userà un elenco di esclusioni. I moduli Logexts.dll e Kernel32.dll vengono sempre esclusi, poiché Logger non è autorizzato a registrare se stesso.