Preparazione all'uso della messaggistica unificata
È necessario completare le attività di configurazione descritte in questa sezione prima di usare l'heap dump in modalità utente (UMDH) per acquisire le allocazioni dell'heap per un processo. Se il computer non è configurato correttamente, UMDH non genererà alcun risultato o i risultati saranno incompleti o non corretti.
Creare il database di analisi dello stack in modalità utente
Prima di usare UMDH per acquisire le allocazioni dell'heap per un processo, è necessario configurare Windows per acquisire le tracce dello stack.
Per abilitare l'acquisizione dell'analisi dello stack per un processo, usare GFlags per impostare il flag Crea database di analisi dello stack in modalità utente per il processo. Questa operazione può essere eseguita con uno dei metodi seguenti:
Nell'interfaccia grafica GFlags scegliere la scheda File immagine. Digitare il nome del processo, inclusa l'estensione del nome file, ad esempio Notepad.exe. Premere TAB, selezionare Crea database di analisi dello stack in modalità utente e quindi selezionare Applica.
In alternativa, usare la riga di comando GFlags seguente, dove ImageName è il nome del processo (inclusa l'estensione del nome file):
gflags /i ImageName +ust
Per impostazione predefinita, la quantità di dati di analisi dello stack raccolti da Windows è limitata a 32 MB in un processore x86 e 64 MB in un processore x64. Se è necessario aumentare le dimensioni del database, scegliere la scheda File immagine nell'interfaccia grafica GFlags, digitare il nome del processo, premere TAB , selezionare la casella di controllo Stack Backtrace (Megs), digitare un valore (in MB) nella casella di testo associata e quindi selezionare Applica.
Nota Aumentare questo database solo quando necessario, perché potrebbe esaurire risorse di Windows limitate. Quando le dimensioni maggiori non sono più necessarie, restituire questa impostazione al valore originale.
Queste impostazioni influiscono su tutte le nuove istanze del programma. Non influisce sulle istanze attualmente in esecuzione del programma.
Accedere ai simboli necessari
Prima di usare UMDH, è necessario avere accesso ai simboli appropriati per l'applicazione. UMDH usa il percorso del simbolo specificato dalla variabile di ambiente _NT_SYMBOL_PATH. Impostare questa variabile su un percorso contenente i simboli per l'applicazione.
Se si include anche un percorso ai simboli di Windows, l'analisi potrebbe essere più completa. La sintassi per questo percorso del simbolo è identica a quella usata dal debugger; per informazioni dettagliate, vedere Percorso simbolo.
Ad esempio, se i simboli per l'applicazione si trovano in C:\MyApp\Symbols e sono stati installati i file di simboli di Windows in \\myshare\winsymbols, usare il comando seguente per impostare il percorso del simbolo:
set _NT_SYMBOL_PATH=c:\myapp\symbols;\\myshare\winsymbols
Come altro esempio, se i simboli per l'applicazione si trovano in C:\MyApp\Symbols e si vuole usare l'archivio simboli Microsoft pubblico per i simboli di Windows, usando C:\MyCache come archivio downstream, usare il comando seguente per impostare il percorso del simbolo:
set _NT_SYMBOL_PATH=c:\myapp\symbols;srv*c:\mycache*https://msdl.microsoft.com/download/symbols
Importante Si supponga di avere due computer: un computer di registrazione in cui si crea un log UMDH e un computer di analisi in cui si analizza il log UMDH. Il percorso del simbolo nel computer di analisi deve puntare ai simboli per la versione di Windows caricata nel computer di registrazione al momento in cui è stato effettuato il log. Non puntare il percorso del simbolo nel computer di analisi a un server di simboli. In questo caso, UMDH recupererà i simboli per la versione di Windows in esecuzione nel computer di analisi e UMDH non visualizzerà risultati significativi.
Disabilitare la memorizzazione nella cache BSTR
Automazione (in precedenza nota come automazione OLE) memorizza nella cache la memoria usata dalle stringhe BSTR. Ciò può impedire a UMDH di determinare correttamente il proprietario di un'allocazione di memoria. Per evitare questo problema, è necessario disabilitare la memorizzazione nella cache BSTR.
Per disabilitare la memorizzazione nella cache BSTR, impostare la variabile di ambiente OANOCACHE uguale a una (1). Questa impostazione deve essere eseguita prima di avviare l'applicazione le cui allocazioni devono essere tracciate.
In alternativa, è possibile disabilitare la memorizzazione nella cache BSTR dall'interno dell'applicazione stessa chiamando la funzione SetNoOaCache di .NET Framework. Se si sceglie questo metodo, è necessario chiamare questa funzione in anticipo, perché tutte le allocazioni BSTR già memorizzate nella cache quando viene chiamato SetNoOaCache rimarranno memorizzate nella cache.
Se è necessario tracciare le allocazioni effettuate da un servizio, è necessario impostare OANOCACHE come variabile di ambiente di sistema e quindi riavviare Windows per rendere effettiva questa impostazione.
Trovare l'ID processo
UMDH identifica il processo in base al relativo identificatore di processo (PID). È possibile trovare il PID di qualsiasi processo in esecuzione usando Gestione attività, Elenco attività o TList.