Ler em inglês

Partilhar via


ProcDump v11.0

Por Mark Russinovich e Andrew Richards

Publicado em: 2022-03-11

DownloadBaixar ProcDump (714 KB)

Baixar ProcDump para Linux (GitHub)
Baixar ProcDump para Mac (GitHub)

Criado com ZoomIt

Introdução

ProcDump é um utilitário de linha de comando cujo objetivo principal é monitorar um aplicativo para picos de CPU e gerar despejos de memória durante um pico que um administrador ou desenvolvedor pode usar para determinar a causa do pico. O ProcDump também inclui monitoramento de janelas suspensas (usando a mesma definição de travamento de janela que o Windows e o Gerenciador de Tarefas usam), monitoramento de exceções sem tratamento e pode gerar despejos com base nos valores dos contadores de desempenho do sistema. Ele também pode servir como um utilitário de despejo de processo geral que você pode incorporar em outros scripts.

Usando o ProcDump

Uso da captura:

Windows Command Prompt
procdump.exe [-mm] [-ma] [-mt] [-mp] [-mc <Mask>] [-md <Callback_DLL>] [-mk]
            [-n <Count>]
            [-s <Seconds>]
            [-c|-cl <CPU_Usage> [-u]]
            [-m|-ml <Commit_Usage>]
            [-p|-pl <Counter> <Threshold>]
            [-h]
            [-e [1] [-g] [-b] [-ld] [-ud] [-ct] [-et]]
            [-l]
            [-t]
            [-f  <Include_Filter>, ...]
            [-fx <Exclude_Filter>, ...]
            [-dc <Comment>]
            [-o]
            [-r [1..5] [-a]]
            [-at <Timeout>]
            [-wer]
            [-64]
            {
                {{[-w] <Process_Name> | <Service_Name> | <PID>} [<Dump_File> | <Dump_Folder>]}
            |
                {-x <Dump_Folder> <Image_File> [Argument, ...]}
            }

Uso da instalação:

Windows Command Prompt
procdump.exe -i [Dump_Folder]
            [-mm] [-ma] [-mt] [-mp] [-mc <Mask>] [-md <Callback_DLL>] [-mk]
            [-r]
            [-at <Timeout>]
            [-k]
            [-wer]

Desinstalar o uso:

Windows Command Prompt
procdump.exe -u

Tipos de despejo:

Tipo de despejo Description
-mm Escreva um arquivo de despejo 'Mini'. (predefinição)
- Inclui memória referenciada direta e indiretamente (pilhas e o que elas referenciam).
- Inclui todos os metadados (Processo, Thread, Módulo, Handle, Address Space, etc.).
-ma Escreva um arquivo de despejo 'Completo'.
- Inclui toda a memória (Imagem, Mapeada e Privada).
- Inclui todos os metadados (Processo, Thread, Módulo, Handle, Address Space, etc.).
-mt Escreva um arquivo de despejo 'Triagem'.
- Inclui memória diretamente referenciada (pilhas).
- Inclui metadados limitados (Process, Thread, Module e Handle).
- A remoção de informações sensíveis é tentada, mas não garantida.
-mp Escreva um arquivo de despejo 'MiniPlus'.
- Inclui toda a memória privada e toda a imagem de leitura/escrita ou memória mapeada.
- Inclui todos os metadados (Processo, Thread, Módulo, Handle, Address Space, etc.).
- Para minimizar o tamanho, a maior área de memória privada acima de 512MB é excluída.
  Uma área de memória é definida como a soma de alocações de memória do mesmo tamanho.
  O despejo é tão detalhado quanto um despejo completo, mas 10% a 75% do tamanho.
- Nota: Os processos CLR são despejados como Full (-ma) devido a limitações de depuração.
-mc Escreva um arquivo de despejo 'Personalizado'.
- Inclui a memória e os metadados definidos pela máscara especificada MINIDUMP_TYPE (Hex).
-MD Escreva um arquivo de despejo 'Callback'.
- Inclui a memória definida pela MiniDumpWriteDump rotina de retorno de chamada nomeada MiniDumpCallbackRoutine da DLL especificada.
- Inclui todos os metadados (Processo, Thread, Módulo, Handle, Address Space, etc.).
-Mk Escreva também um arquivo de despejo 'Kernel'.
- Inclui as pilhas de kernel dos threads no processo.
- O sistema operacional não suporta um dump do kernel (-mk) ao usar um clone (-r).
- Ao usar vários tamanhos de dump, um dump de kernel é tomado para cada tamanho de dump.

Condições:

Condição Description
-a Evite interrupções. Requer -r. Se o gatilho fizer com que o destino seja suspenso por um tempo prolongado devido a um limite de despejo simultâneo excedido, o gatilho será ignorado.
-em Evite interrupções no tempo limite. Cancele a coleta do gatilho em N segundos.
-b Trate os pontos de interrupção de depuração como exceções (caso contrário, ignore-os).
-c Limite de CPU acima do qual criar um dump do processo.
-cl Limite de CPU abaixo do qual criar um dump do processo.
-CC Adicione a cadeia de caracteres especificada ao Comentário de despejo gerado.
-e Escreva um despejo quando o processo encontrar uma exceção não tratada.
Inclua o para criar despejo 1 em exceções de primeira chance.
Adicionar -ld para criar um despejo quando uma DLL (módulo) é carregada (filtragem se aplica).
Adicionar -ud para criar um despejo quando uma DLL (módulo) é descarregada (filtragem se aplica).
Adicionar -ct para criar um despejo quando um thread é criado.
Adicionar -et para criar um despejo quando um thread é encerrado.
-f Filtre (inclua) o conteúdo de exceções, registro de depuração e nome de arquivo em DLL load/unload. Curingas (*) são suportados.
-FX Filtre (exclua) o conteúdo de exceções, registro de depuração e nome de arquivo em DLL load/unload. Curingas (*) são suportados.
-g Execute como um depurador nativo em um processo gerenciado (sem interoperabilidade).
-h Escreva dump se o processo tiver uma janela suspensa (não responde a mensagens de janela por pelo menos 5 segundos).
-k Mate o processo após a clonagem (-r) ou no final da coleta de dump.
-l Exiba o log de depuração do processo.
-m Limite de confirmação de memória em MB para criar um dump.
-ml Acionar quando a confirmação de memória cair abaixo do valor de MB especificado.
-n Número de dumps para gravar antes de sair.
-o Substitua um arquivo de despejo existente.
-p Acionar quando o Contador de Desempenho estiver no Limite especificado ou excedê-lo. Alguns contadores e/ou nomes de instância podem diferenciar maiúsculas de minúsculas.
-PL Acione quando o Contador de Desempenho ficar abaixo do Limite especificado.
-r Despeje usando um clone. O limite simultâneo é opcional (padrão 1, máximo 5). O sistema operacional não suporta um dump de kernel (-mk) ao usar um clone (-r). CUIDADO: um alto valor de simultaneidade pode afetar o desempenho do sistema.
- Windows 7: Usa reflexão. O SO não suporta -e.
- Windows 8.0: Usa reflexão. O SO não suporta -e.
- Windows 8.1+: Usa PSS. Todos os tipos de gatilho são suportados.
-s Segundos consecutivos antes de o despejo ser gravado (o padrão é 10).
-t Escreva um dump quando o processo terminar.
-u Trate o uso da CPU em relação a um único núcleo (usado com -c).
-v DEBUG ONLY: Saída detalhada.
-w Aguarde até que o processo especificado seja iniciado se não estiver em execução.
-wer Enfileire o despejo (maior) para o Relatório de Erros do Windows.
-x Inicie a imagem especificada com argumentos opcionais. Se for um Aplicativo ou Pacote da Loja, o ProcDump será iniciado na próxima ativação (apenas).
-y HIDDEN: Armazene a ativação do aplicativo.
-64 Por padrão, o ProcDump capturará um despejo de 32 bits de um processo de 32 bits quando executado no Windows de 64 bits. Esta opção substitui para criar um despejo de 64 bits. Use apenas para depuração do subsistema WOW64.

Contrato de Licença:

Use a -accepteula opção de linha de comando para aceitar automaticamente o contrato de licença Sysinternals.

Rescisão automatizada:

-cancel <Target Process PID>

Usar essa opção ou definir um evento com o nome ProcDump-<PID> é o mesmo que digitar Ctrl+C para encerrar o ProcDump normalmente. A rescisão normal garante que o processo seja retomado se uma captura estiver ativa. O cancelamento aplica-se a TODAS as instâncias ProcDump que monitorizam o processo.

Nome do arquivo:

Nome do arquivo de despejo padrão: PROCESSNAME_YYMMDD_HHMMSS.dmp

São suportadas as seguintes substituições:

Substituição Explicação
NOME do PROCESSO Nome do Processo
PID Process ID
CÓDIGO DE EXCEÇÃO Código de Exceção
AAMMDD Ano/Mês/Dia
HHMMSS Hora/Minuto/Segundo

Exemplos

  • Escreva um mini dump de um processo chamado 'bloco de notas' (apenas uma correspondência pode existir):

    Windows Command Prompt
    C:\>procdump notepad
    
  • Escreva um despejo completo de um processo com PID '4572':

    Windows Command Prompt
    C:\>procdump -ma 4572
    
  • Escreva um Mini primeiro e, em seguida, um despejo completo de um processo com PID '4572':

    Windows Command Prompt
    C:\>procdump -mm -ma 4572
    
  • Escreva 3 Mini dumps com 5 segundos de intervalo de um processo chamado 'bloco de notas':

    Windows Command Prompt
    C:\>procdump -n 3 -s 5 notepad
    
  • Escreva até 3 Mini dumps de um processo chamado 'consumir' quando ele exceder 20% de uso da CPU por cinco segundos:

    Windows Command Prompt
    C:\>procdump -n 3 -s 5 -c 20 consume
    
  • Escreva um Mini dump para um processo chamado 'hang.exe' quando uma de suas janelas não responder por mais de 5 segundos:

    Windows Command Prompt
    C:\>procdump -h hang.exe
    
  • Escreva um dump completo e kernel para um processo chamado 'hang.exe' quando uma de suas janelas não responder por mais de 5 segundos:

    Windows Command Prompt
    C:\>procdump -ma -mk -h hang.exe
    
  • Escreva um Mini dump de um processo chamado 'outlook' quando o uso total da CPU do sistema exceder 20% por 10 segundos:

    Windows Command Prompt
    C:\>procdump outlook -s 10 -p "\Processor(_Total)\% Processor Time" 20
    
  • Escreva um despejo completo de um processo chamado 'outlook' quando a contagem de identificadores do Outlook exceder 10.000:

    Windows Command Prompt
    C:\>procdump -ma outlook -p "\Process(Outlook)\Handle Count" 10000
    
  • Escreva um despejo completo de 'svchost' PID 1234, instância #87, quando a contagem de identificadores exceder 10.000:

    Windows Command Prompt
    C:\>procdump -ma 1234 -p "\Process(svchost#87)\Handle Count" 10000
    

    Nota: Contadores de várias instâncias
    Se houver várias instâncias do contador, você precisará incluir o Nome e/ou o número da instância.

    txt
    \Processor(NNN)\% Processor Time
    \Thermal Zone Information(<name>)\Temperature
    \Process(<name>[#NNN])\<counter>
    

    Sistemas operacionais mais antigos exigem que você anexe o PID para \Process contadores.

    txt
    \Process(<name>[_PID])\<counter>
    

    Dica: Use o Monitor de Desempenho para exibir os contadores (por exemplo, diferenciação de maiúsculas e minúsculas).
    Dica: Para \Process(*) contadores baseados, use o PowerShell para mapear um PID para seu #NNN.

    pwsh
    Get-Counter -Counter "\Process(*)\ID Process"
    
  • Escreva um despejo completo para uma exceção de 2ª chance:

    Windows Command Prompt
    C:\>procdump -ma -e w3wp.exe
    
  • Escreva um despejo completo para uma exceção de 1ª ou 2ª chance:

    Windows Command Prompt
    C:\>procdump -ma -e 1 w3wp.exe
    
  • Escreva um despejo completo para uma mensagem de cadeia de caracteres de depuração:

    Windows Command Prompt
    C:\>procdump -ma -l w3wp.exe
    
  • Escreva até 10 dumps completos de cada exceção de 1ª ou 2ª chance de w3wp.exe:

    Windows Command Prompt
    C:\>procdump -ma -n 10 -e 1 w3wp.exe
    
  • Escreva até 10 despejos completos se o código/nome/msg de uma exceção contiver 'NotFound':

    Windows Command Prompt
    C:\>procdump -ma -n 10 -e 1 -f NotFound w3wp.exe
    
  • Escreva até 10 despejos completos se uma mensagem de cadeia de caracteres de depuração contiver 'NotFound':

    Windows Command Prompt
    C:\>procdump -ma -n 10 -l -f NotFound w3wp.exe
    
  • Aguarde um processo chamado 'bloco de notas' (e monitore-o em busca de exceções):

    Windows Command Prompt
    C:\>procdump -e -w notepad
    
  • Inicie um processo chamado 'bloco de notas' (e monitore-o em busca de exceções):

    Windows Command Prompt
    C:\>procdump -e -x c:\dumps notepad
    
  • Registe-se para iniciar e tente ativar uma 'aplicação' da loja. Uma nova instância do ProcDump será iniciada quando for ativada:

    Windows Command Prompt
    C:\>procdump -e -x c:\dumps Microsoft.BingMaps_8wekyb3d8bbwe!AppexMaps
    
  • Registe-se para o lançamento de um 'pacote' de loja. Uma nova instância do ProcDump será iniciada quando for ativada (manualmente):

    Windows Command Prompt
    C:\>procdump -e -x c:\dumps Microsoft.BingMaps_1.2.0.136_x64__8wekyb3d8bbwe
    
  • Escreva um despejo MiniPlus do Armazenamento de Informações do Microsoft Exchange quando ele tiver uma exceção não tratada:

    Windows Command Prompt
    C:\>procdump -mp -e store.exe
    
  • Exiba sem escrever um dump, os códigos/nomes de exceção de w3wp.exe:

    Windows Command Prompt
    C:\>procdump -e 1 -f "" w3wp.exe
    
  • Windows 7/8.0; Use o Reflection para reduzir a interrupção por 5 gatilhos consecutivos:

    Windows Command Prompt
    C:\>procdump -r -ma -n 5 -s 15 wmplayer.exe
    
  • Windows 8.1+; Use o PSS para reduzir a interrupção de 5 gatilhos simultâneos:

    Windows Command Prompt
    C:\>procdump -r 5 -ma -n 5 -s 15 wmplayer.exe
    
  • Instale o ProcDump como o depurador postmortem (AeDebug):

    Windows Command Prompt
    C:\>procdump -ma -i c:\dumps
    

    .. ou..

    Windows Command Prompt
    C:\Dumps>procdump -ma -i
    
  • Desinstale o ProcDump como o depurador postmortem (AeDebug):

    Windows Command Prompt
    C:\>procdump -u
    

Veja uma lista de exemplos de linhas de comando (os exemplos estão listados acima):

Windows Command Prompt
C:\>procdump -? -e
  • Windows Internals Book As atualizações oficiais e página errata para o livro definitivo sobre Windows internals, por Mark Russinovich e David Solomon.
  • Referência do administrador do Windows Sysinternals O guia oficial dos utilitários Sysinternals por Mark Russinovich e Aaron Margosis, incluindo descrições de todas as ferramentas, seus recursos, como usá-las para solução de problemas e exemplos de casos reais de seu uso.

DownloadBaixar ProcDump (714 KB)

Baixar ProcDump para Linux (GitHub)
Baixar ProcDump para Mac (GitHub)

Funciona em:

  • Cliente: Windows 8.1 e superior.
  • Servidor: Windows Server 2012 e superior.

Saiba mais