Autor Tópico: segmentation fault gcc  (Lida 9994 vezes)

Offline perseo

  • Usuário Ubuntu
  • *
  • Mensagens: 2
    • Ver perfil
segmentation fault gcc
« Online: 23 de Outubro de 2008, 16:05 »
Boa tarde a todos estou com um problema, tenho um programa que quero rodar e nao consigo tipo ele compila e roda nomal so que quando eu entrou com o parametro que preciso ele da segmentation fault, eu tenho instalado na minha maquina o ubuntu 8.04.1 64 bits ahe nao sei se se possa ter algo a ver ja que na maquina de um amigo meu que tem o ubuntu 7.04 32 bits ele funciona direitinho.
Agradeço a atenção,

Offline Felix

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 3.068
    • Ver perfil
    • Alexsandro Felix
Re: segmentation fault gcc
« Resposta #1 Online: 23 de Outubro de 2008, 19:13 »
Talvez se você disser qual o programa que está tentando executar seja mais fácil alguém poder ajudá-lo, pois possam ter passado pelo mesmo problema e saibam como resolver, com poucos detalhes assim é muito difícil.

Darcamo

  • Visitante
Re: segmentation fault gcc
« Resposta #2 Online: 24 de Outubro de 2008, 01:17 »
Na verdade não é muito difícil. É praticamente impossível.
Segmentation fault é um erro bem genérico que pode ocorrer de diversas maneiras, mas em geral significa que você tentou acessar alguma região de memória que não deveria.

Ex: usar um (ponteiro) objecto que não foi criado/inicializado, tentar escrever fora de algum container, etc.

Você pode rodar o programa no debugger e ver em que linha ele para. Muitas vezes apenas olhando as linhas perto da linha com o problema é suficiente para detectar a causa.
Posta aqui ao menos as linhas em volta da linha em que ele da o segmentation fault.

Offline perseo

  • Usuário Ubuntu
  • *
  • Mensagens: 2
    • Ver perfil
Re: segmentation fault gcc
« Resposta #3 Online: 24 de Outubro de 2008, 11:57 »
Peço disculpas eu nao mencionei qual era o programa que queria rodar bom e um programa feito em linguagem c (mexe com estruturas de dados e ele é composto por 12 arquivos .c e 3 .h) que estou analizando e tento rodar ele via gcc ele tem um arquivo makefile e como mencionei antes em outras maquinas ele compila e roda normal sem e com o parametro de teste so na minha maquina so compila e roda mas quando entro com o parametro de teste ele da segmentation fault. Eu ainda nao debugei ele na minha maquina mais tipo tentei dar uns printf para ver ate onde ele chegava e dava esse erro de segmentação mas mesmo que coloquei um printf na primeira linha do codigo do arquivo principal ele nao imprime nada so da segmentation fault e se digamos coloco uns \n no printf ele da os pula linha e imprime segmentation fault mais sem imprimir o conteudo do printf. A seguir mostra o arquivo makefile do programa

##############################################################
# Makefile for Unfolder

TARGET = mole mci2dot
LIBS =
FLAGS =
INCLUDES =

##############################################################

DEBUG = -O3
WARNINGS = -Wall

CC = gcc $(DEBUG) $(INCLUDES) $(WARNINGS) $(FLAGS)
SHELL = /bin/sh

TMPFILES =

OBJECTS = main.o common.o readlib.o \
     netconv.o nodelist.o readpep.o mci.o \
     unfold.o marking.o pe.o order.o
    
default: $(TARGET)

clean:
   rm -f $(OBJECTS) $(TMPFILES) $(TARGET) core* *.output *.d .deps gmon.out

mole: $(OBJECTS)
   $(CC) $(OBJECTS) -o mole

# Dependencies

%.d: %.c
     $(SHELL) -ec '$(CC)  -MM $? | sed '\''s/$*\.o/& $@/g'\'' > $@'

DEPS = $(OBJECTS:%.o=%.d)

.deps: $(DEPS)
   echo " " $(DEPS) | \
   sed 's/[    ][    ]*/#include /g' | tr '#' '\012' > .deps

include .deps
 

Agradeço pela atenção e bom nao sei eu tentei mudar de versão do gcc mais mesmo assim nao deu mto certo ae nao sei se e por causa de versão o se for por causa da minha maquina o se for o ubuntu 8.04.1 64 bits, ja que outros programas que eu tenho que trabalham com estrutura de dados eles funcionam normal so esse que da esse problema

Offline fpissarra

  • Usuário Ubuntu
  • *
  • Mensagens: 246
    • Ver perfil
    • Lost in the e-Jungle
Re: segmentation fault gcc
« Resposta #4 Online: 30 de Outubro de 2008, 09:36 »
Hummm.... sem ter acesso aos fontes é difícil estabelecer um diagnóstico. Como já dito, "segmentation fault" é bem genérico e é causado, na maioria das vezes, por uso de ponteiros NULL ou que apontem para regiões erradas da memória.

Notei uma coisa estranha no Makefile: O símbolo DEBUG é definido como -O3? Assim vc não poderá depurar a aplicação!

Offline yzarc

  • Usuário Ubuntu
  • *
  • Mensagens: 189
  • uso pq é melhor!
    • Ver perfil
    • minhas ideias para o ubuntu
Re: segmentation fault gcc
« Resposta #5 Online: 29 de Novembro de 2008, 15:04 »
passei dois dias com uma amiga pra achar o q fazia um segmentatio fault no programa dela. vou te dar o mesmo conselho q dei a ela, instale uma IDE q te permita compilar e debugar rapidamente (nós usamos eclipse). procure por erros em alocamento e desalocamento de memória, provavelmente o erro não está onde o código pára mas sim bem antes. veja se vc ta usando free corretamente, se ta alocando corretamente também. use de comentar blocos q aloquem ou desaloquem memória. no nosso caso eram dois erros, um delete[] em uma variável q era usada depois e um "free's" (código de um terceiro) q tinha sido mal programado.
dica, se possível deixe o c++ de lado, use java e seja feliz.
; Linux is almost there!