Exemplo 10: detectando um vazamento de memória de heap em um processo
Este exemplo usa GFlags e um heap de despejo de modo de usuário (UMDH, umdh.exe), uma ferramenta incluída nas Ferramentas de Depuração da Microsoft para Windows.
Para detectar um vazamento na memória de heap no notepad.exe
Defina o sinalizador Criar banco de dados de rastreamento de pilha do modo de usuário (ust) para o arquivo de imagem notepad.exe.
O comando a seguir usa GFlags para definir o sinalizador de banco de dados Criar rastreamento de pilha do modo de usuário . Ele usa o parâmetro /i para identificar o arquivo de imagem e a abreviação ust para o sinalizador.
gflags /i Notepad.exe +ust
Como resultado desse comando, um rastreamento de pilha no modo de usuário é criado para todas as novas instâncias do processo do Bloco de Notas.
Defina o caminho do arquivo de símbolo.
O comando a seguir cria uma variável de ambiente que armazena o caminho para o diretório de arquivos de símbolo:
set _NT_SYMBOL_PATH=C:\Windows\symbols
Inicie o Bloco de Notas.
Localize o PID (identificador de processo) do processo do Bloco de Notas.
Você pode encontrar o PID de qualquer processo em execução no Gerenciador de Tarefas ou na lista de tarefas (tasklist.exe), uma ferramenta incluída nos sistemas operacionais Windows XP Professional e Windows Server 2003. Neste exemplo, o PID do Bloco de Notas é 1228.
Execute UMDH.
O comando a seguir executa UMDH (umdh.exe). Ele usa o parâmetro -p: para especificar o PID que, neste exemplo, é 1228. Ele usa o parâmetro /f: para especificar o nome e o local do arquivo de saída para o despejo de heap, notepad.dmp.
umdh -p:1228 -f:notepad.dmp
Em resposta, o UMDH grava um despejo completo de todos os heaps ativos no arquivo notepad.dmp.