Segmentation Fault (Core Dump) C

1. Segmentation Fault (Core Dump) C

Ahmad
praise

(usa CentOS)

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


  


2. Re: Segmentation Fault (Core Dump) C

Mauricio Souza Klein
Hebang

(usa Arch Linux)

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

Ahmad
praise

(usa CentOS)

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 ?






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts