Panoramica del comando GFlags
Per informazioni generali su come installare e individuare gflags.exe, vedere GFlags.
È possibile usare i comandi GFlags e la finestra di dialogo Flag globali in modo intercambiabile.
Utilizzo dei comandi GFlags
Per usare GFlags, digitare i comandi seguenti nella riga di comando.
Per aprire la finestra di dialogo GFlags:
gflags
Per impostare o cancellare flag globali nel Registro di sistema:
gflags /r [{+ | -}Flag [{+ | -}Flag...]]
Per impostare o cancellare flag globali per la sessione corrente:
gflags /k [{+ | -}Flag [{+ | -}Flag...]]
Per impostare o cancellare flag globali per un file di immagine:
gflags /i ImageFile [{+ | -}Flag [{+ | -}Flag...]]
gflags /i ImageFile /tracedb SizeInMB
Per impostare o cancellare la funzionalità Pool speciale (Windows Vista e versioni successive)
gflags {/r | /k} {+ | -}spp {PoolTag | 0xSize}
Per abilitare o disabilitare la funzionalità Traccia riferimenti a oggetti (Windows Vista e versioni successive)
gflags {/ro | /ko} [/p] [/i ImageFile | /t PoolTag;[PoolTag...]]
gflags {/ro | /ko} /d
Per abilitare e configurare la verifica dell'heap della pagina:
gflags /p /enable ImageFile [ /full [/backwards] | /random Probability | /size SizeStart SizeEnd | /address AddressStart AddressEnd | /dlls DLL [DLL...] ]
[/debug ["DebuggerCommand"] | /kdebug] [/unaligned] [/notraces] [/fault Rate [TimeOut]] [/leaks] [/protect] [/no_sync] [/no_lock_checks]
Per disabilitare la verifica dell'heap della pagina:
gflags /p [/disable ImageFile] [/?]
Per visualizzare la Guida:
gflags /?
Parametri
Bandiera
Specifica un'abbreviazione di tre lettere (FlagAbbr) o un valore esadecimale (FlagHex) che rappresenta una funzionalità di debug. Le abbreviazioni e i valori esadecimali sono elencati nella tabella dei flag GFlags.
Usare uno dei formati di flag seguenti:
Formato | Descrizione |
---|---|
{+ | -}FlagAbbr |
Imposta (+) o cancella (-) il flag rappresentato dall'abbreviazione del flag. Senza un simbolo più (+) o meno (-), il comando non ha alcun effetto. |
[+ | -]FlagHex |
Aggiunge (+) o sottrae (-) il valore esadecimale di un flag. Un flag viene impostato quando il relativo valore viene incluso nella somma. Add (+) è l'impostazione predefinita. Immettere un valore esadecimale (senza 0x) che rappresenta un singolo flag o immettere la somma dei valori esadecimali per più flag. |
ImageFile
Specifica il nome di un file eseguibile, inclusa l'estensione del nome file, ad esempio notepad.exe o mydll.dll.
/r
Registry. Visualizza o modifica i flag di debug a livello di sistema archiviati nel Registro di sistema. Queste impostazioni diventano effettive quando si riavvia Windows e rimangono effettive fino a quando non vengono modificate.
Senza parametri aggiuntivi, gflags /r visualizza i flag a livello di sistema impostati nel Registro di sistema.
/Okay
Impostazioni del flag del kernel. Visualizza o modifica i flag di debug a livello di sistema per questa sessione. Queste impostazioni sono effettive immediatamente, ma vengono perse quando Windows si arresta. Le impostazioni influiscono sui processi avviati al termine di questo comando.
Senza parametri aggiuntivi, gflags /k visualizza i flag a livello di sistema impostati per la sessione corrente.
/io
Impostazioni del file di immagine. Visualizza o modifica i flag di debug per un determinato processo. Queste impostazioni vengono archiviate nel Registro di sistema. Sono efficaci per tutte le nuove istanze di questo processo e rimangono efficaci fino a quando non vengono modificate.
Senza parametri aggiuntivi, gflags /i ImageFile visualizza i flag impostati per il processo specificato.
/tracedb SizeInMB
Imposta le dimensioni massime del database di analisi dello stack in modalità utente per il processo. Per usare questo parametro, è necessario impostare il flag Create user mode stack trace database (ust) per il processo.
SizeInMB è un numero intero che rappresenta il numero di megabyte in unità decimali. Il valore predefinito è la dimensione minima, 8 MB; non esiste alcuna dimensione massima. Per ripristinare le dimensioni predefinite, impostare SizeInMB su 0.
Spp
(Windows Vista e versioni successive). Imposta o cancella la funzionalità Pool speciale. Per un esempio, vedere Esempio 14: Configurazione di un pool speciale.
PoolTag
(Windows Vista e versioni successive). Specifica un tag del pool per la funzionalità Pool speciale. Usare solo con il flag spp .
Immettere un modello a quattro caratteri per PoolTag, ad esempio Tag1. Può includere i caratteri jolly ? (sostituire con qualsiasi carattere singolo) e * (sostituire con più caratteri). Ad esempio, Fat* o Av?4. I tag del pool fanno sempre distinzione tra maiuscole e minuscole.
Dimensioni 0x
(Windows Vista e versioni successive). Specifica un intervallo di dimensioni per la funzionalità Pool speciale. Usare solo con il flag spp . Per indicazioni sulla selezione di un valore di dimensione, vedere "Selezione di dimensioni allocazione" in Pool speciale.
/Ro
Abilita, disabilita e visualizza le impostazioni di Traccia riferimento oggetti nel Registro di sistema. Per apportare una modifica a questa impostazione effettiva, è necessario riavviare Windows.
Senza parametri aggiuntivi, /ro visualizza le impostazioni di Traccia riferimento oggetti nel Registro di sistema.
Per abilitare La traccia dei riferimenti a oggetti, è necessario includere almeno un tag del pool (/t PoolTag) o un file di immagine (/i ImageFile) nel comando . Per informazioni dettagliate, vedere Esempio 15: Uso della traccia dei riferimenti agli oggetti.
Nella tabella seguente sono elencati i sottoparametri validi con /ro.
/t PoolTags |
Limita la traccia agli oggetti con i tag del pool specificati. Usare un punto e virgola (;) per separare i nomi dei tag. Immettere fino a 16 tag del pool. Immettere un modello a quattro caratteri per PoolTags, ad esempio Tag1. Se si specificano più tag del pool, Windows traccia gli oggetti con uno dei tag del pool specificati. Se non si specifica alcun tag del pool, Windows traccia tutti gli oggetti creati dall'immagine. |
/i ImageFile |
Limita la traccia agli oggetti creati dai processi con il file di immagine specificato. È possibile specificare un solo file di immagine con il parametro /i . Immettere un nome di file di immagine, ad esempio notepad.exe, con un massimo di 64 caratteri. "System" e "Idle" non sono nomi di immagine validi. Se non si specifica un file di immagine, Windows traccia tutti gli oggetti con i tag del pool specificati. Se si specificano sia un file di immagine (/i) che uno o più tag del pool (/t), gli oggetti tracce di Windows con uno dei tag del pool specificati creati dall'immagine specificata. |
/d |
Cancella le impostazioni della funzionalità Traccia riferimento oggetti. Se usato con /ro, cancella le impostazioni nel Registro di sistema. |
/p |
Permanente. I dati di traccia vengono conservati fino a quando la traccia di riferimento oggetti non viene disabilitata o il computer viene arrestato o riavviato. Per impostazione predefinita, i dati di traccia per un oggetto vengono eliminati quando l'oggetto viene eliminato definitivamente. |
/Ko
Abilita, disabilita e visualizza le impostazioni del flag kernel (runtime) Di traccia di riferimento oggetti. Le modifiche apportate a questa impostazione sono immediatamente effettive, ma vengono perse quando il sistema viene arrestato o riavviato. Per informazioni dettagliate, vedere Esempio 15: Uso della traccia dei riferimenti agli oggetti.
Senza parametri aggiuntivi, /ko visualizza le impostazioni della traccia di riferimento oggetto (runtime) del flag kernel.
Per abilitare La traccia dei riferimenti a oggetti, è necessario includere almeno un tag del pool (/t PoolTag) o un file di immagine (/i ImageFile) nel comando .
La tabella seguente elenca i sottoparametri validi con /ko.
/t PoolTags |
Limita la traccia agli oggetti con i tag del pool specificati. Usare un punto e virgola (;) per separare i nomi dei tag. Immettere fino a 16 tag del pool. Immettere un modello a quattro caratteri per PoolTags, ad esempio Tag1. Se si specificano più tag del pool, Windows traccia gli oggetti con uno dei tag del pool specificati. Se non si specifica alcun tag del pool, Windows traccia tutti gli oggetti creati dall'immagine. |
/i ImageFile |
Limita la traccia agli oggetti creati dai processi con il file di immagine specificato. È possibile specificare un solo file di immagine con il parametro /i . Se non si specifica un file di immagine, Windows traccia tutti gli oggetti con i tag del pool specificati. Se si specificano sia un file di immagine (/i) che uno o più tag del pool (/t), gli oggetti tracce di Windows con uno dei tag del pool specificati creati dall'immagine specificata. |
/d |
Cancella le impostazioni della funzionalità Traccia riferimento oggetti. Se usato con /ro, cancella le impostazioni nel Registro di sistema. |
/p |
Permanente. I dati di traccia vengono conservati fino a quando la traccia di riferimento oggetti non viene disabilitata o il computer viene arrestato o riavviato. Per impostazione predefinita, i dati di traccia per un oggetto vengono eliminati quando l'oggetto viene eliminato definitivamente. |
/p
Imposta le opzioni di verifica dell'heap di pagina per un processo.
Senza parametri aggiuntivi, gflags /p visualizza un elenco di file di immagine per cui è abilitata la verifica dell'heap delle pagine.
La verifica dell'heap di pagina monitora le operazioni di memoria heap dinamiche, incluse le operazioni di allocazione e le operazioni libere, e causa un'interruzione del debugger quando rileva un errore dell'heap.
/disabilitare ImageFile
Disattiva la verifica dell'heap di pagina (standard o completa) per il file di immagine specificato.
Questo comando equivale a disattivare il flag Enable page heap (hpa) per un processo (gflags /i ImageFile -hpa). È possibile usare i comandi in modo intercambiabile.
/abilitare ImageFile
Attiva la verifica dell'heap di pagina per il file di immagine specificato.
Per impostazione predefinita, il parametro /enable attiva la verifica dell'heap di pagina standard per il file di immagine. Per abilitare la verifica dell'heap a pagina completa per il file di immagine, aggiungere il parametro /full al comando o usare il parametro /i con il flag +hpa .
/pieno
Attiva la verifica dell'heap a pagina intera per il processo. La verifica dell'heap a pagina completa inserisce una zona di memoria virtuale riservata alla fine di ogni allocazione.
L'uso di questo parametro equivale a attivare il flag Enable page heap (hpa) per un processo (gflags /i ImageFile +hpa). È possibile usare i comandi in modo intercambiabile.
/indietro
Posiziona la zona di memoria virtuale riservata all'inizio di un'allocazione, anziché alla fine. Di conseguenza, il debugger intercettare l'overrun all'inizio del buffer, anziché quelli alla fine del buffer. Valido solo con il /full parametro.
/aleatorio Probabilità
Sceglie la verifica dell'heap di pagina completa o standard per ogni allocazione, in base alla probabilità specificata.
Probabilità è un numero intero decimale compreso tra 0 e 100 che rappresenta la probabilità di verifica dell'heap di pagina completa. Una probabilità di 100 corrisponde all'uso del parametro /full . Una probabilità pari a 0 equivale all'uso della verifica dell'heap di pagina standard.
/grandezza SizeStart SizeEnd
Abilita la verifica dell'heap a pagina completa per le allocazioni all'interno dell'intervallo di dimensioni specificato e abilita la verifica dell'heap di pagina standard per tutte le altre allocazioni da parte del processo.
SizeStart e SizeEnd sono numeri interi decimali. Il valore predefinito è la verifica dell'heap di pagina standard per tutte le allocazioni.
/indirizzo AddressStart AddressEnd
Abilita la verifica dell'heap di pagina completa per la memoria allocata mentre un indirizzo restituito nell'intervallo di indirizzi specificato si trova nello stack di chiamate in fase di esecuzione. Abilita la verifica dell'heap di pagina standard per tutte le altre allocazioni da parte del processo.
Per usare questa funzionalità, specificare un intervallo che includa gli indirizzi di tutte le funzioni che chiamano la funzione con l'allocazione sospetta. L'indirizzo della funzione chiamante si troverà nello stack di chiamate quando si verifica l'allocazione sospetta.
AddressStart e AddressEnd specificano l'intervallo di indirizzi cercato nelle tracce dello stack di allocazione. Gli indirizzi vengono specificati in formato esadecimale, ad esempio 0xAABBCCDD.
Nei sistemi Windows Server 2003 e versioni precedenti, il parametro /address è valido solo nei computer basati su x86. In Windows Vista, è valido in tutte le architetture supportate.
/dlls DLL[, DLL...]
Abilita la verifica dell'heap a pagina completa per le allocazioni richieste dalle DLL specificate e dalla verifica dell'heap della pagina standard per tutte le altre allocazioni da parte del processo.
DLL è il nome di un file binario, inclusa l'estensione del nome file. Il file specificato deve essere una libreria di funzioni caricata dal processo durante l'esecuzione.
/debug
Avvia automaticamente il processo specificato dal parametro /enable in un debugger.
Per impostazione predefinita, questo parametro usa il debugger NTSD con la riga di comando ntsd -g -G -x e con l'heap di pagina abilitato, ma è possibile usare la variabile DebuggerCommand per specificare un debugger e una riga di comando diversi.
Per informazioni su NTSD, vedere Debug tramite CDB e NTSD.
Questa opzione è utile per i programmi difficili da avviare da un prompt dei comandi e quelli avviati da altri processi.
"DebuggerCommand"
Specifica un debugger e il comando inviato al debugger. Questa stringa tra virgolette può includere un percorso completo del debugger, il nome del debugger e i parametri di comando interpretati dal debugger. Le virgolette sono obbligatorie.
Se il comando include un percorso al debugger, il percorso non può contenere altre virgolette. Se vengono visualizzate altre virgolette, la shell dei comandi (cmd.exe) non interpreta il comando.
/errorbug
Avvia automaticamente il processo specificato dal parametro /enable nel debugger NTSD con la riga di comando ntsd -g -G -x, con heap di pagina abilitato e con il controllo NTSD reindirizzato al debugger del kernel.
Per informazioni su NTSD, vedere Debug tramite CDB e NTSD.
/Allineato
Allinea la fine di ogni allocazione in corrispondenza di un limite di fine pagina, anche se in questo caso l'indirizzo iniziale non è allineato su un blocco a 8 byte. Per impostazione predefinita, il gestore heap garantisce che l'indirizzo iniziale di un'allocazione sia allineato su un blocco a 8 byte.
Questa opzione viene usata per rilevare gli errori off-by-one-byte. Quando questo parametro viene usato con il parametro /full , la zona di memoria virtuale riservata inizia subito dopo l'ultimo byte dell'allocazione e si verifica un errore immediato quando un processo tenta di leggere o scrivere anche un byte oltre l'allocazione.
/decommit
Questa opzione non è più valida. Viene accettato, ma ignorato.
Il programma PageHeap (pageheap.exe) incluso in Windows 2000 ha implementato la verifica dell'heap a pagina completa inserendo una pagina inaccessibile dopo un'allocazione. In questo strumento, il parametro /decommit ha sostituito una zona di memoria virtuale riservata per la pagina inaccessibile. In questa versione di GFlags, una zona di memoria virtuale riservata viene sempre usata per implementare la verifica dell'heap a pagina completa.
/notraces
Specifica che le tracce dello stack di runtime non vengono salvate.
Questa opzione migliora leggermente le prestazioni, ma rende molto più difficile il debug. Questo parametro è valido, ma l'uso non è consigliato.
/colpa
Forza l'esito negativo delle allocazioni di memoria del programma alla velocità specificata e dopo il timeout specificato.
Questo parametro inserisce errori di allocazione dell'heap nel file di immagine sottoposto a test (una pratica nota come "inserimento di errori") in modo che alcune allocazioni di memoria non riescano, come potrebbe verificarsi quando il programma viene eseguito in condizioni di memoria insufficiente. Questo test consente di rilevare errori nella gestione degli errori di allocazione, ad esempio la mancata rilascio delle risorse.
Tasso |
Specifica un numero intero decimale compreso tra 1 (,01%) e 10000 (100%) che rappresenta la probabilità che un'allocazione non riesca. Il valore predefinito è 100 (1%). |
TimeOut |
Determina l'intervallo di tempo tra l'inizio del programma e l'inizio delle routine di inserimento degli errori. TimeOut viene misurato in secondi. Il valore predefinito è 5 (secondi). |
/Perdite
Verifica la presenza di perdite di heap al termine di un processo.
Il parametro /leaks disabilita l'heap di pagina completo. Quando si usa /leaks, i parametri e i parametri /full che modificano il parametro /full, ad esempio /backwards, vengono ignorati e GFlags esegue la verifica dell'heap di pagina standard con un controllo della perdita.
/proteggere
Protegge le strutture interne dell'heap. Questo test viene usato per rilevare i danneggiamenti casuali dell'heap. Può rallentare notevolmente l'esecuzione.
/no_sync
Verifica l'accesso non sincronizzato. Questo parametro causa un'interruzione se rileva che un heap creato con il flag HEAP_NO_SERIALIZE è accessibile da thread diversi.
Non usare questo flag per eseguire il debug di un programma che include un gestore heap personalizzato. Le funzioni che sincronizzano l'accesso all'heap dell'heap causano errori di sincronizzazione che non esistono.
/no_lock_checks
Disabilita il verificatore di sezione critico.
/?
Visualizza la Guida per GFlags. Con /p, /? visualizza la Guida per le opzioni di verifica dell'heap della pagina in GFlags.
Commenti
Se si digita gflags senza parametri, viene visualizzata la finestra di dialogo Flag globali .
Se si digita gflags /p senza parametri aggiuntivi, viene visualizzato un elenco di programmi in cui è abilitata la verifica dell'heap della pagina.
Per cancellare tutti i flag, impostare Flag su -FFFFFFFF. (Impostazione) Flag su 0 aggiunge zero al valore del flag corrente. Non cancella tutti i flag.
Quando si imposta Flag per un file di immagine su FFFFFFFF, Windows cancella tutti i flag ed elimina la voce GlobalFlag nella sottochiave del Registro di sistema per il file di immagine. La sottochiave rimane.
I parametri /full, /random, /size, /address e /dlls per l'operazione heap /enable della pagina determinano quali allocazioni sono soggette alla verifica dell'heap della pagina e al metodo di verifica usato. È possibile usare solo uno di questi parametri in ogni comando. Il valore predefinito è la verifica dell'heap di pagina standard di tutte le allocazioni del processo. I parametri rimanenti impostano le opzioni per la verifica dell'heap di pagina.
Le funzionalità dell'heap di pagina in GFlags monitorano solo le allocazioni di memoria heap heap che usano le funzioni di gestione heap di Windows standard (HeapAlloc, GlobalAlloc, LocalAlloc, malloc, new, new[]o le funzioni di deallocazione corrispondenti) o quelle che usano operazioni personalizzate che chiamano le funzioni di gestione heap standard.
Per determinare se la verifica dell'heap di pagina completa o standard è abilitata per un programma, nella riga di comando digitare gflags /p. Nella visualizzazione risultante, le tracce indicano che la verifica dell'heap di pagina standard è abilitata per il programma e le tracce complete indicano che la verifica dell'heap di pagina completa è abilitata per il programma.
Il /enable parametro imposta il flag abilita l'heap di pagina (hpa) per il file di immagine nel Registro di sistema. Tuttavia, il parametro /enable attiva la verifica dell'heap standard per il file di immagine per impostazione predefinita, a differenza del parametro /i con il flag +hpa, che attiva la verifica dell'heap completa per un file di immagine.
La verifica dell'heap di pagine standard inserisce modelli casuali alla fine di un'allocazione ed esamina i modelli quando viene liberato un blocco heap. La verifica dell'heap a pagina completa inserisce una zona di memoria virtuale riservata alla fine di ogni allocazione.
La verifica dell'heap a pagina completa può utilizzare rapidamente la memoria di sistema. Per abilitare la verifica dell'heap a pagina completa per i processi a elevato utilizzo di memoria, usare il parametro /size o /dlls .
Dopo aver usato i flag globali per il debug, inviare un comando gflags /p /disable per disattivare la verifica dell'heap della pagina ed eliminare le voci del Registro di sistema associate. In caso contrario, le voci lette dal debugger rimangono nel Registro di sistema. Non è possibile usare il comando gflags /i hpa per questa attività, perché disattiva la verifica dell'heap della pagina, ma non elimina le voci del Registro di sistema.
Per impostazione predefinita, in Windows Vista e versioni successive di Windows, le impostazioni specifiche del programma (flag di file di immagine e impostazioni di verifica dell'heap di pagina) vengono archiviate nell'account utente corrente.
Questa versione di GFlags include le opzioni -v , che consentono di sviluppare funzionalità per GFlags. Tuttavia, queste funzionalità non sono ancora complete e, pertanto, non sono documentate.