-
Gerar coredump em programa C
Quando um programa termina inexperadamente, o Linux pode gerar um dump da área de memória deste programa no momento do crash, para depuração. Acontece que o seu ambiente pode estar configurado para não gerar esse dump. Uma maneira de conferir isto é executando o seguinte comando:
# ulimit -c
O número retornado é o tamanho máximo que o coredump pode ter em kb. Caso seja 0, significa que não será gerado coredump. Para garantir a geração, o valor pode ser especificado como infinito:
# ulimit -c unlimited
O problema é que seu programa pode estar rodando em uma sessão diferente, e assim, os limites podem varias. Desta maneira, o próprio programa pode alterar este parâmetro em tempo de execução. Segue um pequeno código de exemplo:
#include <signal.h> #include <sys/time.h> #include <sys/resource.h> int main(int ac,char *av[]) { struct rlimit limit; limit.rlim_cur=RLIM_INFINITY; limit.rlim_max=RLIM_INFINITY; setrlimit(RLIMIT_CORE,&limit); printf("%d\n",10/0); return 0; }Neste exemplo, foi usada a struct rlimit. Seus membros são rlim_cur e rlim_max, sendo eles softlimit e hardlimit respectivamente. O valor definido para ambos foi infinito (RLIM_INFINITY). Para efetivar a alteração, usa-se a função setrlimit. Veja que este código exemplo irá terminar em crash, pois há uma divisão por zero e o coredump deverá ser gerado.
Comentários via Facebook:
2 Respostas a “Gerar coredump em programa C”
Deixe uma resposta
Tags
"viagens"
asterisk
backup
banco de dados
catástrofes
c programming
curiosidade
desenvolvimento
dicas
espiritualidade
filosofias
hardware
ideia maluca
kvm
libvirt
linux
livros
lvm2
recuperação
redes
servidores
shell script
slackware
sql
utilidades
variedades
virtualização
vídeos
Recentes
Blog
- Carlos Feichas
- Debugging Consultoria
- Fabiano Xavier
- Fábio Arezi
- Felipe Molina
- Lucas Catón
- Mateus Penha
- Tiago Mathidios
Lista de Links
- Asterisk Asterisk PBX
- Debugging Consultoria Debugging Consultoria
- LPI
- Slackbuilds Repositório Slackbuilds
- Slackware Site oficial Slackware
- Viva o Linux Comunidade Viva o Linux
- Voip-Info Wiki VoIP