ProcDump v11.0
Por Mark Russinovich e Andrew Richards
Publicado: 03/11/2022
Baixar o ProcDump (714 KB)
Baixar o ProcDump para Linux (GitHub)
Baixar ProcDump para Mac (GitHub)
Criado com ZoomIt
Introdução
O ProcDump é um utilitário de linha de comando cuja principal finalidade é 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 janela suspensa (usando a mesma definição de janela suspensa que o Windows e o Gerenciador de Tarefas usam), monitoramento de exceções não tratadas 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 inserir em outros scripts.
Usar o ProcDump
Capturar o Uso:
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, ...]}
}
Instalar o Uso:
procdump.exe -i [Dump_Folder]
[-mm] [-ma] [-mt] [-mp] [-mc <Mask>] [-md <Callback_DLL>] [-mk]
[-r]
[-at <Timeout>]
[-k]
[-wer]
Desinstalar o Uso:
procdump.exe -u
Tipos de Despejo:
Tipo de Despejo | Descrição |
---|---|
-mm | Grave um arquivo de despejo “Mini”. (padrão) - Inclui memória referenciada direta e indiretamente (pilhas e o que elas referenciam). - Inclui todos os metadados (Processo, Thread, Módulo, Identificador, Espaço de Endereço etc.). |
-ma | Grave um arquivo de despejo “Full”. - Inclui toda a memória (Imagem, Mapeada e Privada). - Inclui todos os metadados (Processo, Thread, Módulo, Identificador, Espaço de Endereço etc.). |
-mt | Grave um arquivo de despejo “Triage”. - Inclui memória referenciada diretamente (pilhas). - Inclui metadados limitados (Processo, Thread, Módulo e Identificador). - A remoção de informações confidenciais é tentada, mas não garantida. |
-mp | Grave um arquivo de despejo “MiniPlus”. - Inclui toda a memória privada e toda a imagem de leitura/gravação ou memória mapeada. - Inclui todos os metadados (Processo, Thread, Módulo, Identificador, Espaço de Endereço etc.). - Para minimizar o tamanho, a maior área de memória privada com mais de 512 MB é 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 Full, mas 10%-75% do tamanho. - Observação: os processos CLR são despejados como Full (-ma) devido a limitações de depuração. |
-mc | Grave um arquivo de despejo “Custom”. - Inclui a memória e os metadados definidos pela máscara MINIDUMP_TYPE especificada (Hex). |
-md | Grave um arquivo de despejo “Callback”. - Inclui a memória definida pelo rotina de retorno de chamada MiniDumpWriteDump denominada MiniDumpCallbackRoutine da DLL especificada.- Inclui todos os metadados (Processo, Thread, Módulo, Identificador, Espaço de Endereço etc.). |
-mk | Também grave um arquivo de despejo “Kernel”. - Inclui as pilhas de kernel dos threads no processo. - O sistema operacional não dá suporte a um despejo de kernel ( -mk ) ao usar um clone (-r ).- Ao usar vários tamanhos de despejo, um despejo de kernel é feito para cada tamanho de despejo. |
Condições:
Condição | Descrição |
---|---|
-a | Evite interrupção. 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. |
-at | Evite interrupção no Tempo Limite. Cancele a coleção 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 despejo do processo. |
-cl | Limite de CPU abaixo do qual criar um despejo do processo. |
-dc | Adicione a cadeia de caracteres especificada ao Comentário de Despejo gerado. |
-e | Grave um despejo quando o processo encontrar uma exceção sem tratamento. Inclua o 1 para criar despejo em exceções de primeira chance.Adicione -ld para criar um despejo quando uma DLL (módulo) for carregada (a filtragem se aplica).Adicione -ud para criar um despejo quando uma DLL (módulo) for carregada (a filtragem se aplica).Adicione -ct para criar um despejo quando um thread for criado.Adicione -et para criar um despejo quando um thread for encerrado. |
-f | Filtre (inclua) o conteúdo das exceções, o registro em log de depuração e o nome do arquivo de carregamento/descarregamento da DLL. Há suporte para caracteres curinga (*). |
-fx | Filtre (exclua) o conteúdo das exceções, o registro em log de depuração e o nome do arquivo de carregamento/descarregamento da DLL. Há suporte para caracteres curinga (*). |
-g | Execute como um depurador nativo em um processo gerenciado (sem interoperabilidade). |
-h | Grave um despejo se o processo tiver uma janela suspensa (não responde às mensagens da janela por pelo menos 5 segundos). |
-k | Encerre o processo após a clonagem (-r ) ou no final da coleção de despejo. |
-l | Exiba o registro em log de depuração do processo. |
-m | Limite de confirmação de memória em MB no qual criar um despejo. |
-ml | Gatilho para quando a confirmação de memória cair abaixo do valor de MB especificado. |
-n | Número de despejos a serem gravados antes de sair. |
-o | Substitua um arquivo de despejo existente. |
-p | Gatilho para quando o Contador de Desempenho estiver em ou exceder o limite especificado. Alguns Contadores e/ou Nomes de Instância podem diferenciar maiúsculas de minúsculas. |
-pl | Gatilho para quando o Contador de Desempenho ficar abaixo do limite especificado. |
-r | Despejo usando um clone. O limite simultâneo é opcional (padrão 1, máx. 5). - O sistema operacional não dá suporte a um despejo de kernel (-mk ) ao usar um clone (-r ). CUIDADO: um valor de alta simultaneidade pode afetar o desempenho do sistema.- Windows 7: usa Reflexão. O sistema operacional não dá suporte a -e .- Windows 8.0: usa Reflexão. O sistema operacional não dá suporte a -e .- Windows 8.1+: usa PSS. Há suporte para todos os tipos de gatilho. |
-s | Segundos consecutivos antes de o despejo ser gravado (o padrão é 10). |
-t | Grave um despejo quando o processo for encerrado. |
-u | Trate o uso da CPU em relação a um único núcleo (usado com -c ). |
-v | SOMENTE DEPURAÇÃO: saída detalhada. |
-w | Aguarde até que o processo especificado seja iniciado se ele não estiver em execução. |
-wer | Coloque o despejo (maior) na fila do Relatório de Erros do Windows. |
-x | Inicie a imagem especificada com argumentos opcionais. Se for um Aplicativo ou Pacote da Store, o ProcDump será iniciado na próxima ativação (somente). |
-y | OCULTO: ativação de aplicativo da Store. |
-64 | Por padrão, o ProcDump capturará um despejo de 32 bits de um processo de 32 bits ao ser executado no Windows de 64 bits. Essa opção substitui para criar um despejo de 64 bits. Use somente para depuração do subsistema WOW64. |
Contrato de Licença:
Use a opção de linha de comando -accepteula
para aceitar automaticamente o contrato de licença da Sysinternals.
Encerramento Automatizado:
-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. O encerramento garante que o processo seja retomado se uma captura estiver ativa. O cancelamento se aplica a TODAS as instâncias do ProcDump que monitoram o processo.
Nome do arquivo:
Nome do arquivo de despejo padrão: PROCESSNAME_YYMMDD_HHMMSS.dmp
Há suporte para os seguintes substituições:
Substituição | Explicação |
---|---|
PROCESSNAME | Nome do Processo |
PID | ID do Processo |
EXCEPTIONCODE | Código de Exceção |
AAMMDD | Ano/Mês/Dia |
HHMMSS | Hora/Minuto/Segundo |
Exemplos
Grave um mini despejo de um processo chamado “notepad” (somente uma correspondência pode existir):
C:\>procdump notepad
Grave um despejo Full de um processo com PID “4572”:
C:\>procdump -ma 4572
Grave um despejo Mini e, em seguida, um despejo completo de um processo com PID “4572”:
C:\>procdump -mm -ma 4572
Grave três despejos Mini de cinco segundos de um processo chamado “notepad”:
C:\>procdump -n 3 -s 5 notepad
Grave até três despejos Mini de um processo chamado “consume” quando exceder 20% do uso da CPU por cinco segundos:
C:\>procdump -n 3 -s 5 -c 20 consume
Grave um despejo Mini para um processo chamado “hang.exe” quando uma de suas janelas não responder por mais de cinco segundos:
C:\>procdump -h hang.exe
Grave um despejo Mini e Kernel para um processo chamado “hang.exe” quando uma de suas janelas não responder por mais de cinco segundos:
C:\>procdump -ma -mk -h hang.exe
Grave um despejo Mini de um processo chamado “outlook” quando o uso total da CPU do sistema exceder 20% por dez segundos:
C:\>procdump outlook -s 10 -p "\Processor(_Total)\% Processor Time" 20
Grave um despejo Full de um processo chamado “outlook” quando a contagem de identificadores do Outlook exceder 10.000:
C:\>procdump -ma outlook -p "\Process(Outlook)\Handle Count" 10000
Grave um despejo Full do PID 1234 de “svchost”, Instância 87, quando a contagem de identificadores exceder 10.000:
C:\>procdump -ma 1234 -p "\Process(svchost#87)\Handle Count" 10000
Observação: Vários Contadores de Instância
Se houver várias instâncias do contador, você precisará incluir o Nome e/ou o Número da instância.\Processor(NNN)\% Processor Time \Thermal Zone Information(<name>)\Temperature \Process(<name>[#NNN])\<counter>
Os sistemas operacionais mais antigos exigem que você acrescente o PID para contadores
\Process
.\Process(<name>[_PID])\<counter>
Dica: use o Monitor de Desempenho para exibir os contadores (diferenciação de maiúsculas e minúsculas).
Dica: para contadores baseados em\Process(*)
, use o PowerShell para mapear um PID para seu#NNN
.Get-Counter -Counter "\Process(*)\ID Process"
Grave um despejo Full para uma exceção de segunda chance:
C:\>procdump -ma -e w3wp.exe
Grave um despejo Full para uma exceção de primeira e segunda chance:
C:\>procdump -ma -e 1 w3wp.exe
Grave um despejo Full para uma mensagem de cadeia de caracteres de depuração:
C:\>procdump -ma -l w3wp.exe
Grave até dez despejos Full de cada exceção de primeira ou segunda chance de w3wp.exe:
C:\>procdump -ma -n 10 -e 1 w3wp.exe
Grave até dez despejos Full se o código/nome/msg de uma exceção contiver “
NotFound
”:C:\>procdump -ma -n 10 -e 1 -f NotFound w3wp.exe
Grave até dez despejos Full se uma mensagem de cadeia de caracteres de depuração contiver “
NotFound
”:C:\>procdump -ma -n 10 -l -f NotFound w3wp.exe
Aguarde um processo chamado “notepad” (e monitore-o em busca de exceções):
C:\>procdump -e -w notepad
Inicie um processo chamado “notepad” (e monitore-o em busca de exceções):
C:\>procdump -e -x c:\dumps notepad
Registre-se para iniciar e tente ativar um “aplicativo” da Store. Uma nova instância do ProcDump será iniciada quando for ativada:
C:\>procdump -e -x c:\dumps Microsoft.BingMaps_8wekyb3d8bbwe!AppexMaps
Registre-se para iniciar um “pacote” da Store. Uma nova instância do ProcDump será iniciada quando for ativada (manualmente):
C:\>procdump -e -x c:\dumps Microsoft.BingMaps_1.2.0.136_x64__8wekyb3d8bbwe
Grave um despejo MiniPlus do Microsoft Exchange Information Store quando ele tiver uma exceção sem tratamento:
C:\>procdump -mp -e store.exe
Exibir sem gravar um despejo, os códigos/nomes de exceção de w3wp.exe:
C:\>procdump -e 1 -f "" w3wp.exe
Windows 7/8.0; use a Reflexão para reduzir a interrupção de cinco gatilhos consecutivos:
C:\>procdump -r -ma -n 5 -s 15 wmplayer.exe
Windows 8.1+; use o PSS para reduzir a interrupção de cinco gatilhos simultâneos:
C:\>procdump -r 5 -ma -n 5 -s 15 wmplayer.exe
Instale o ProcDump como o depurador postmortem (AeDebug):
C:\>procdump -ma -i c:\dumps
..ou..
C:\Dumps>procdump -ma -i
Desinstale o ProcDump como o depurador postmortem (AeDebug):
C:\>procdump -u
Veja uma lista de linhas de comando de exemplo (os exemplos são listados acima):
C:\>procdump -? -e
Links Relacionados
- Livro sobre os Componentes Internos do Windows A página oficial de atualizações e erratas do livro definitivo sobre os componentes internos do Windows, de 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 solucionar problemas e exemplos de casos de seu uso no mundo real.
Baixar o ProcDump (714 KB)
Baixar o ProcDump para Linux (GitHub)
Baixar ProcDump para Mac (GitHub)
Executado em:
- Cliente: Windows 8.1 e superior.
- Servidor: Windows Server 2012 e superior.
Saiba mais
- Ferramentas de Desfragmentação: #9 – ProcDump Este episódio de Ferramentas de Desfragmentação aborda o que a ferramenta captura e as durações de interrupção esperadas
- Ferramentas de Desfragmentação: #10 – ProcDump – Gatilhos Este episódio aborda as opções de gatilho em particular exceções de primeira e segunda chance
- Ferramentas de desfragmentação: #11 – ProcDump – Windows 8 e Monitor de Processo Este episódio aborda o suporte a aplicativos modernos e o suporte ao registro em log do Monitor de Processo