Compartilhar via


Preparando-se para usar o UMDH

Você deve concluir as tarefas de configuração descritas nesta seção antes de usar o UMDH (Heap de Despejo do Modo de Usuário) 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 estarão incompletos ou incorretos.

Criar o banco de dados de rastreamento de pilha do modo de usuário

Antes de usar o UMDH para capturar as alocações de heap para um processo, você deve configurar o Windows para capturar rastreamentos de pilha.

Para habilitar a captura de rastreamento de pilha para um processo, use GFlags para definir o sinalizador Criar banco de dados de rastreamento de pilha no modo de usuário 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 do nome do arquivo (por exemplo, Notepad.exe). Pressione a tecla TAB , selecione Criar banco de dados de rastreamento de pilha no modo de usuário e, em seguida, selecione Aplicar.

  • Ou, equivalentemente, use a seguinte linha de comando GFlags, onde ImageName é o nome do processo (incluindo a extensão do nome do arquivo):

    gflags /i Nome_da_imagem +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 você 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 em execução no momento.

Acesse os símbolos necessários

Antes de usar o UMDH, você deve ter acesso aos símbolos adequados para sua aplicação. O UMDH usa o caminho do símbolo especificado pela variável de ambiente _NT_SYMBOL_PATH. Defina essa variável como igual a um caminho que contém os símbolos do seu aplicativo.

Se você também incluir um caminho para símbolos do Windows, a análise poderá ser mais completa. A sintaxe desse 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ímbolo do Windows em \\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 de símbolos público da Microsoft para seus símbolos do Windows, usando C:\MyCache como seu repositório 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 log 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 log 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 OLE Automation) 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 desabilitar o cache BSTR.

Para desabilitar 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, pois todas as alocações BSTR que já foram armazenadas em cache quando SetNoOaCache for chamado permanecerão armazenadas 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 reiniciar o Windows para que essa configuração entre em vigor.

Localizar o ID do processo

O 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.