
Uma versão Linux da ferramenta ProcDump Sysinternals
ProcDump é uma releitura para Linux e Mac da clássica ferramenta ProcDump do conjunto Sysinternals de ferramentas para Windows. O ProcDump oferece uma maneira conveniente para desenvolvedores Linux e Mac criarem core dumps de suas aplicações com base em gatilhos de desempenho. O ProcDump para Linux e Mac faz parte do Sysinternals.

gdb >= 7.6.1Consulte as instruções de instalação aqui.
Consulte as instruções de compilação aqui.
MUDANÇA IMPORTANTE Com o lançamento do ProcDump 1.3, as opções agora estão alinhadas com a versão Windows do ProcDump. Observe que a versão Mac atualmente possui um conjunto limitado de gatilhos.
Capture Usage:
procdump [-n Count]
[-s Seconds]
[-c|-cl CPU_Usage]
[-m|-ml Commit_Usage1[,Commit_Usage2...]]
[-gcm [<GCGeneration>: | LOH: | POH:]Memory_Usage1[,Memory_Usage2...]]
[-gcgen Generation]
[-restrack [nodump]]
[-sr Sample_Rate]
[-tc Thread_Threshold]
[-fc FileDescriptor_Threshold]
[-sig Signal_Number1[,Signal_Number2...]]
[-e]
[-f Include_Filter,...]
[-fx Exclude_Filter]
[-mc Custom_Dump_Mask]
[-pf Polling_Frequency]
[-o]
[-log syslog|stdout]
{
{{[-w] Process_Name | [-pgid] PID} [Dump_File | Dump_Folder]}
}
Options:
-n Número de dumps a serem gravados antes de sair.
-s Segundos consecutivos antes de gravar o dump (padrão é 10).
-c Limite de CPU acima do qual criar um dump do processo.
-cl Limite de CPU abaixo do qual criar um dump do processo.
-m Limite(s) de commit de memória (MB) acima do(s) qual(is) criar dumps.
-ml Limite(s) de commit de memória (MB) abaixo do(s) qual(is) criar dumps.
-gcm [.NET] Limite(s) de memória GC (MB) acima do(s) qual(is) criar dumps para a geração ou heap especificada (padrão é uso total de memória .NET).
-gcgen [.NET] Criar dump quando a coleta de lixo da geração especificada iniciar e terminar.
-restrack Ativa o rastreamento de vazamento de memória (família de APIs malloc). Se usado sem outros gatilhos, use 't' para capturar manualmente um relatório restrack. Quando usado com outros gatilhos, a opção 'nodump' pode ser usada para evitar a geração de dump e produzir apenas relatório(s) restrack.
-sr Taxa de amostragem ao usar -restrack.
-tc Limite de contagem de threads acima do qual criar um dump do processo.
-fc Limite de contagem de descritores de arquivo acima do qual criar um dump do processo.
-sig Lista separada por vírgulas de números de sinal durante os quais qualquer sinal resulta em um dump do processo.
-e [.NET] Criar dump quando o processo encontrar uma exceção.
-f Filtrar (incluir) no conteúdo de exceções .NET (separado por vírgulas). Caracteres curinga (*) são suportados.
-fx Filtrar (excluir) no conteúdo das pilhas de chamadas do -restrack. Caracteres curinga (*) são suportados.
-mc Máscara personalizada de core dump (em hex) indicando qual memória deve ser incluída no core dump. Consulte 'man core' (/proc/[pid]/coredump_filter) para opções disponíveis.
-pf Frequência de polling.
-o Sobrescrever arquivo de dump existente.
-log Grava rastreamento estendido do ProcDump no fluxo de saída especificado (syslog ou stdout).
-w Aguardar o processo especificado ser iniciado se não estiver em execução.
-pgid ID do processo refere-se a um ID de grupo de processos.
A opção -restrack ativa o rastreamento de recursos, permitindo o monitoramento e a geração de relatórios de quaisquer alocações de recursos que não tenham sido liberadas no momento da geração do core dump. Os resultados são salvos em um arquivo com extensão '.restrack'. Atualmente, as seguintes funções de alocação/desalocação de recursos são rastreadas:
Alocação:
Desalocação:
A versão Mac atualmente não implementa rastreamento de recursos.
Os exemplos a seguir têm como alvo um processo com pid == 1234
O seguinte criará um core dump imediatamente.
sudo procdump 1234
O seguinte criará 3 core dumps com intervalo de 10 segundos.
sudo procdump -n 3 1234
O seguinte criará 3 core dumps com intervalo de 5 segundos.
sudo procdump -n 3 -s 5 1234
O seguinte criará um core dump cada vez que o processo tiver uso de CPU >= 65%, até 3 vezes, com pelo menos 10 segundos entre cada dump.
sudo procdump -c 65 -n 3 1234
O seguinte criará um core dump cada vez que o processo tiver uso de CPU >= 65%, até 3 vezes, com pelo menos 5 segundos entre cada dump.
sudo procdump -c 65 -n 3 -s 5 1234
O seguinte criará um core dump quando o uso de CPU estiver fora do intervalo [10,65].
sudo procdump -cl 10 -c 65 1234
O seguinte criará um core dump quando o uso de CPU for >= 65% ou o uso de memória for >= 100 MB.
sudo procdump -c 65 -m 100 1234
O seguinte criará um core dump quando o uso de memória for >= 100 MB seguido por outro dump quando o uso de memória for >= 200 MB.
sudo procdump -m 100,200 1234
O seguinte criará um relatório de vazamento de memória (sem dumps) toda vez que o usuário pressionar 't':
sudo procdump -restrack 1234
O seguinte criará 3 relatórios de vazamento de memória (sem dumps) com intervalo de 5 segundos:
sudo procdump -n 3 -s 5 -restrack nodump 1234
O seguinte criará um core dump e um relatório de vazamento de memória quando o uso de memória for >= 100 MB
sudo procdump -m 100 -restrack 1234
O seguinte criará um relatório de vazamento de memória (sem dumps) quando o uso de memória for >= 100 MB
sudo procdump -m 100 -restrack nodump 1234
O seguinte criará um core dump e um relatório de vazamento de memória quando o uso de memória for >= 100 MB, amostrando a cada 10ª alocação de memória.
sudo procdump -m 100 -restrack -sr 10 1234
O seguinte criará um core dump e um relatório de vazamento de memória quando o uso de memória for >= 100 MB e excluirá quaisquer pilhas de chamadas que contenham quadros com a string "cache"
sudo procdump -m 100 -restrack -fx *cache* 1234
O seguinte criará um core dump quando o uso total de memória .NET for >= 100 MB seguido por outro dump quando o uso de memória for >= 200 MB.
sudo procdump -gcm 100,200 1234
O seguinte criará um core dump quando o uso de memória .NET para a geração 1 for >= 1 MB seguido por outro dump quando o uso de memória for >= 2 MB.
sudo procdump -gcm 1:1,2 1234
O seguinte criará um core dump quando o uso de memória do .NET Large Object Heap for >= 100 MB seguido por outro dump quando o uso de memória for >= 200 MB.
sudo procdump -gcm LOH:100,200 1234
O seguinte criará um core dump no início e no final de uma coleta de lixo da geração 1 do .NET.
sudo procdump -gcgen 1
O seguinte criará um core dump no diretório /tmp imediatamente.
sudo procdump 1234 /tmp
O seguinte criará um core dump no diretório atual com o nome dump_0.1234. Se for usado -n, os arquivos serão nomeados dump_0.1234, dump_1.1234 e assim por diante.
sudo procdump 1234 dump
O seguinte criará um core dump quando ocorrer um SIGSEGV.
sudo procdump -sig 11 1234
O seguinte criará um core dump quando ocorrer um SIGSEGV, onde o core dump contém apenas mapeamentos privados anônimos.
sudo procdump -mc 1 -sig 11 1234
O seguinte criará um core dump quando o aplicativo .NET alvo lançar uma System.InvalidOperationException
sudo procdump -e -f System.InvalidOperationException 1234
O filtro de inclusão suporta correspondência parcial e com curingas, então o seguinte também criará um core dump para uma System.InvalidOperationException
sudo procdump -e -f InvalidOperation 1234
ou
sudo procdump -e -f "*Invali*Operation*" 1234
Todas as opções também podem ser usadas com
-w, para esperar por qualquer processo com o nome fornecido.
O seguinte aguarda um processo chamado my_application e cria um core dump imediatamente quando encontrado.
sudo procdump -w my_application
Se você tiver interesse em corrigir problemas e contribuir diretamente com o código, consulte o documento Como Contribuir, que cobre os seguintes tópicos:
Consulte também nosso Código de Conduta.
Copyright (c) Microsoft Corporation. Todos os direitos reservados.
Licenciado sob a Licença MIT.
ProcDump para Linux: