Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Você deve concluir as tarefas de configuração descritas nesta seção antes de usar User-Mode Dump Heap (UMDH) para capturar as alocações de heap para um processo. Se o computador não estiver configurado corretamente, o UMDH não gerará nenhum resultado ou os resultados serão incompletos ou incorretos.
Criar o banco de dados de rastreamento de pilha no modo de usuário
Antes de usar o UMDH para capturar alocações de heap de um processo, deve-se configurar o Windows para capturar rastreios de pilha.
Para habilitar a captura do rasto da pilha para um processo, use GFlags para definir o sinalizador Criar base de dados de rasto da pilha em modo utilizador para o processo. Isso pode ser feito por um dos seguintes métodos:
Na interface gráfica do GFlags, escolha a guia Arquivo de imagem . Digite o nome do processo, incluindo a extensão de nome de arquivo (por exemplo, Notepad.exe). Pressione a tecla TAB , selecione Create user mode stack trace database (Criar banco de dados de rastreamento de pilha no modo de usuário) e selecione Aplicar.
Ou, equivalentemente, use a seguinte linha de comando GFlags, onde ImageName é o nome do processo (incluindo a extensão de nome de arquivo):
gflags /iImageName+ust
Por padrão, a quantidade de dados de rastreamento de pilha que o Windows coleta é limitada a 32 MB em um processador x86 e 64 MB em um processador x64. Se você precisar aumentar o tamanho desse banco de dados, escolha a guia Arquivo de Imagem na interface gráfica do GFlags, digite o nome do processo, pressione a tecla TAB , marque a caixa de seleção Stack Backtrace (Megs), digite um valor (em MB) na caixa de texto associada e selecione Aplicar.
Observação Aumente esse banco de dados somente quando necessário, pois ele pode esgotar recursos limitados do Windows. Quando não precisar mais do tamanho maior, retorne essa configuração ao seu valor original.
Essas configurações afetam todas as novas instâncias do programa. Isso não afeta as instâncias do programa atualmente em execução.
Aceda aos Símbolos Necessários
Antes de usar UMDH, você deve ter acesso aos símbolos adequados para o seu aplicativo. UMDH usa o caminho do símbolo especificado pela variável de ambiente _NT_SYMBOL_PATH. Defina essa variável como um caminho que contém os símbolos para seu aplicativo.
Se você também incluir um caminho para símbolos do Windows, a análise pode ser mais completa. A sintaxe para esse caminho de símbolo é a mesma usada pelo depurador; para obter detalhes, consulte Caminho do símbolo.
Por exemplo, se os símbolos do seu aplicativo estiverem localizados em C:\MyApp\Symbols e você tiver instalado os arquivos de símbolos do Windows como \\myshare\winsymbols, use o seguinte comando para definir o caminho do símbolo:
set _NT_SYMBOL_PATH=c:\myapp\symbols;\\myshare\winsymbols
Como outro exemplo, se os símbolos do seu aplicativo estiverem localizados em C:\MyApp\Symbols, e você quiser usar o repositório público de símbolos da Microsoft para seus símbolos do Windows, usando C:\MyCache como seu armazenamento downstream, você usaria o seguinte comando para definir o caminho do símbolo:
set _NT_SYMBOL_PATH=c:\myapp\symbols;srv*c:\mycache*https://msdl.microsoft.com/download/symbols
Importante Suponha que você tenha dois computadores: um computador de registro onde você cria um log UMDH e um computador de análise onde você analisa o log UMDH. O caminho do símbolo no computador de análise deve apontar para os símbolos da versão do Windows que foi carregada no computador de registro no momento em que o log foi feito. Não aponte o caminho do símbolo no computador de análise para um servidor de símbolos. Se você fizer isso, o UMDH recuperará símbolos para a versão do Windows que está sendo executada no computador de análise e o UMDH não exibirá resultados significativos.
Desativar cache BSTR
A automação (anteriormente conhecida como automação OLE) armazena em cache a memória usada pelas cadeias de caracteres BSTR. Isso pode impedir que o UMDH determine corretamente o proprietário de uma alocação de memória. Para evitar esse problema, você deve desativar o cache BSTR.
Para desativar o cache BSTR, defina a variável de ambiente OANOCACHE igual a um (1). Essa configuração deve ser feita antes de iniciar o aplicativo cujas alocações devem ser rastreadas.
Como alternativa, você pode desabilitar o cache BSTR de dentro do próprio aplicativo chamando a função SetNoOaCache do .NET Framework. Se você escolher esse método, deverá chamar essa função antecipadamente, porque todas as alocações BSTR que já foram armazenadas em cache quando SetNoOaCache é chamado permanecerão em cache.
Se você precisar rastrear as alocações feitas por um serviço, deverá definir OANOCACHE como uma variável de ambiente do sistema e, em seguida, reiniciar o Windows para que essa configuração entre em vigor.
Encontre o ID do processo
UMDH identifica o processo por seu identificador de processo (PID). Você pode encontrar o PID de qualquer processo em execução usando o Gerenciador de Tarefas, Lista de Tarefas ou TList.