Bem, a maneira de criar um arquivo de despejo é:
gcore - Generate a core file for a running process
SINOPSE gcore [-o filename] pid
Eu tenho um processo que está girando fora de controle no Linux, e gostaria de criar um arquivo de despejo que eu possa levar para minha máquina dev e examinar lá.
No Windows, é possível criar um "minidump" de um programa em execução de várias maneiras diferentes, incluindo ADVPlus e o Gerenciador de Tarefas do Windows, indo para a aba Processos e selecionando com o botão direito do mouse "Create Dump File."
Existe uma maneira de fazer isso no Linux?
Eu precisaria de pilhas de chamadas, pilha e pilha de memória (especialmente pilha), exceções e todo o resto.
pmap <PID>
ou
strace -f -o xxx -p <PID>
podem ser as ferramentas que você está procurando.
O pmap mostra uma visão geral sobre o uso de memória do processo fornecido. strace rastreia cada ação que um processo leva. Com -f você diz strace para também considerar a supervisão de processos filhos e -o xxx informa ao strace para gravar a saída em um arquivo. Você também pode iniciar um novo processo usando strace, por exemplo com
strace cat /etc/passwd
Se você estiver interessado apenas em informações específicas, como quais arquivos foram abertos, poderá iniciar o strace de acordo:
strace -f -o xxx -e trace=open -p <PID>
Enquanto isso, o ProcDump da suíte da Sysinternals também foi disponibilizado sob o comando muito liberal Licença MIT da respectiva página do GitHub .
Usage: procdump [OPTIONS...] TARGET
OPTIONS
-C CPU threshold at which to create a dump of the process from 0 to 100 * nCPU
-c CPU threshold below which to create a dump of the process from 0 to 100 * nCPU
-M Memory commit threshold in MB at which to create a dump
-m Trigger when memory commit drops below specified MB value.
-n Number of dumps to write before exiting
-s Consecutive seconds before dump is written (default is 10)
TARGET must be exactly one of these:
-p pid of the process
Assim, como você pode deduzir a partir dos argumentos da linha de comando, é fácil tirar "instantâneos" de um processo que você sabe se comportar mal, pegando quantidades indevidas de recursos para serem posteriormente analisados com gdb
ou mais.
Este ProcDump para Linux, no entanto, não é completo em comparação com seu primo Windows.