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 ?