Pular para o conteúdo

Segmentation Fault (Core Dump) C

Responder tópico
  • Denunciar
  • Indicar

1. Segmentation Fault (Core Dump) C

Enviado em 16/11/2011 - 13:39h

Olá pessoal, alguem tem uma dica de como consigo descobrir o ponto exato que a minha aplicação está abendando. Depois de algum tempo redando ela toma um "Segmentation Fault (Core Dump)" e cai, detalhe ela é compilada e executada em um Solaris, e por ser muito grande cheia de subrotinas, eu não estou conseguindo rastrear a onde esse erro pode está ocorrendo.

Obrigado

Responder tópico

2. Re: Segmentation Fault (Core Dump) C

Enviado em 16/11/2011 - 13:42h

Compila teu código com a flag -g (gcc e/ou g++) e usa o "gdb" para debugar a execução.

Também pode usar o "strace", que mostra todas as chamadas de sistemas realizadas pelo teu código.

Geralmente segfault com dump de memória ocorre ao tentar acessar uma posição de memória nula.

Então, em ambos os casos, procure por uma referência nula.

Espero ter ajudado!

3. Re: Segmentation Fault (Core Dump) C

Enviado em 17/11/2011 - 15:02h

Hebang escreveu:

Compila teu código com a flag -g (gcc e/ou g++) e usa o "gdb" para debugar a execução.

Também pode usar o "strace", que mostra todas as chamadas de sistemas realizadas pelo teu código.

Geralmente segfault com dump de memória ocorre ao tentar acessar uma posição de memória nula.

Então, em ambos os casos, procure por uma referência nula.

Espero ter ajudado!
Muito Obrigado Hebang, olha só no Solaris que eu estou utilizando não tem o gdb, acabei descobrindo um similar o "mdb", e ao executar a copilação com -g e executando o a.out, e logo de pois que ocorre o segmentation fault, eu executo o comando "mdb core", e recebo o seguinte stack:
$ mdb core
Loading modules: [ libc.so.1 ld.so.1 ]
> ::stack
libc.so.1`realfree+0xec(d6468, 342e3030, d98dc, d0, 0, 71d68)
libc.so.1`cleanfree+0x5c(0, a, d902c, ffff0000, fed303a8, fed392a4)
libc.so.1`_malloc_unlocked+0xf4(8, 0, 0, fecc19dc, fffffffe, fecc0ae4)
libc.so.1`malloc+0x4c(2, 1, d9fd8, fecc1f74, fed303a8, fed3a518)
bReplaceTag+0x4e4(ea080, fe6fbf6c, a3ecbd0, 1, fed303a8, 16bf5)
bPrepareTemplate+0x2b4(a3ecbd0, 16bf5, fe6fbf6c, 1, 666d5, 0)
iGenerateRelatorio+0x2b8(fe6fbf6c, 1, 1, 0, fed42a00, 0)
iReport+0x8c(1, fe6fc000, 0, 0, 130f8, 0)
libc.so.1`_lwp_start(0, 0, 0, 0, 0, 0)



Mas eu não estou conseguindo interpretar e compreender esse stack, em que ponto o segmentation fault ocorreu ?

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder