* result){ int acul=0; int x; for(x=0;x<size;x++) { acul+=m[x]; } *result = acul;}Bom, obviamente esse codigo tem um erro, nao inicializamos o ponteiro result assim quando formos escrever nele vamos receber um segmentation faultBom mas por enquanto vamos fazer de conta que nao tem problema e vamos compilar nosso codigo fonte com o seguinte comando:eduardo@debian:~/Documents/programas/gdb$ gcc -o gdbTest gdbTest.cVamos executar:eduardo@debian:~/Documents/programas/gdb$ ./gdbTestE vamos ver o resultado da soma!!!!!Segmentation faultE, ainda nao foi dessa vez. Bom, vamos pedir ajuda ao gdb. Aqui eu ja estou com o gdb instalado. Se voce nao tem ele instalado voce pode rodar o comando:apt-get install gdbMas nao vamos cobrir aqui detalhes da instalacao. Nosso objetivo, agora, e usar.Primeiro passo: vamos compilar nosso programa novamente, com a opcao -g, assim, o gdb teera melhores condicoes de analisar nosso codigo e nos permitira, por exemplo imprimir a linha do SIGSEGV.Vamos la:eduardo@debian:~/Documents/programas/gdb$ gcc -g -o gdbTest gdbTest.cSegundo passo: rodar com o gdbeduardo@debian:~/Documents/programas/gdb$ gdb ./gdbTest GNU gdb (GDB) 7.0.1-debianCopyright (C) 2009 Free Software Foundation, Inc.License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>This is free software: you are free to change and redistribute it.There is NO WARRANTY, to the extent permitted by law. Type "show copying"and "show warranty" for details.This GDB was configured as "x86_64-linux-gnu".For bug reporting instructions, please see:<http://www.gnu.org/software/gdb/bugs/>...Reading symbols from /home/eduardo/Documents/programas/gdb/gdbTest...done.(gdb)Vai ficar piscando o cursor. Apenas digitamos: run(gdb) runStarting program: /home/eduardo/Documents/programas/gdb/gdbTest Program received signal SIGSEGV, Segmentation fault.0x000000000040059e in somaArray (m=0x7fffffffe280, size=5, result=0x0) at gdbTest.c:2323 *result = acul;(gdb) Ja recebemos o nosso SIGSEGV, bom veja que ele ja nos informou a linha que isso ocorreu linha 23 e em qual funcao somaArray veja que ele nos passou os argumentos da funcao, veja que o primeiro parametro e um ponteiro, e realmente tem um endereco ali. O segundo parametro e um int, e realmente tem o valor 5 que estamos passando, mas e o ponteiro result? Veja que ele e nulo, e na linha 23 estamos tentando escrever nele!!! entao achamos a causa do sigsegv.Se voce desejar ver quem chamou a funcao somaArray, voce pode digital o comando bt (backtrace). Imagine que voce poderia ter no main varias chamadas para essa funcao no main. Veja que e na linha 23 que o problema acontece, mas essa linha esta certa, o problema e que ja estamos recebendo o ponteiro nulo!!!entao:(gdb) bt#0 0x000000000040059e in somaArray (m=0x7fffffffe280, size=5, result=0x0) at gdbTest.c:23#1 0x0000000000400539 in main () at gdbTest.c:7(gdb) Agora vamos no main na linha 7 e ver como e a chamada. somaArray(matriz,5,result);bom a variavel matriz esta inicializada corretamente. O parametro size ja e 5, entao esta certo. O result, logo acima, na linha 6 foi declarado: int * result;Mas nao foi inicializado!!! e logo abaixo ja o usamos.Bom, achamos o problema, agora corrigimos:Vamos alterar a linha 6 para: int * result = (int *) malloc(sizeof(int));vamos compilar novamente, pode ser sem a flag -g. eduardo@debian:~/Documents/programas/gdb$ gcc -o gdbTest gdbTest.cuardo@debian:~/Documents/programas/gdb$ ./gdbTest Result: 11eduardo@debian:~/Documents/programas/gdb$ Resolvido!!!!