PDA

View Full Version : gdb chi mi aiuta?


cipi
07-04-2005, 16:09
ciao ragazzi,
ho un prob in un prog... Segmentation fault! :confused: Non capisco perché... sembra che, dopo un tot di iterazioni, dia problemi di scrittura su file! :eek: Il gdb, coso misterioso che non ho mai imparato ad usare, dice

Program received signal SIGSEGV, Segmentation fault.
0x4009dd5f in _IO_vfprintf (s=0x0, format=0x804c51b "%15.10f\n", ap=0xbffff628) at vfprintf.c:270
270 vfprintf.c: No such file or directory.
in vfprintf.c
(gdb) bt
#0 0x4009dd5f in _IO_vfprintf (s=0x0, format=0x804c51b "%15.10f\n", ap=0xbffff628) at vfprintf.c:270
#1 0x400a7ce7 in fprintf (stream=0x0, format=0x804c51b "%15.10f\n") at fprintf.c:32
#2 0x0804aaa6 in fitne ()
#3 0x0804b8ef in main ()
#4 0x40064507 in __libc_start_main (main=0x804b49c <main>, argc=1, ubp_av=0xbffff7d4, init=0x80485c0 <_init>,
fini=0x804c2e0 <_fini>, rtld_fini=0x4000dc14 <_dl_fini>, stack_end=0xbffff7cc) at ../sysdeps/generic/libc-start.c:129


Che sia invece un problema di memoria non liberata da qualche parte?
Chi ha qualche idea????
cipi

cipi
07-04-2005, 16:27
Effettivamente su:
f1=fopen("var.txt","w");
che è dentro un ciclo, il file non mi viene aperto... A cosa può essere dovuto? Possibile che ci sia qualche problema di memoria (es: array dinamici non cancellati, etc.) e quindi che si incasini????
Please!

DanieleC88
07-04-2005, 18:39
Controlla (se il file davvero non viene aperto e "f1" è NULL) la variabile 'errno' per diagnositcare il problema. A prima vista sembrerebbe un problema di allocazione della memoria.

cipi
08-04-2005, 08:56
Effettivamente era null... Ma cosa ancora più strana... Ho introdotto un controllo if(f1==NULL) etc. e il codice non si pianta più e non da errori!!! :confused: :confused: :confused:

DanieleC88
08-04-2005, 15:01
:confused:
E che c'è di strano? Se fai il controllo salti l'errore.

cipi
08-04-2005, 15:08
Originariamente inviato da DanieleC88
:confused:
E che c'è di strano? Se fai il controllo salti l'errore.

Lo strano è che non entra mai nell'if.....

DanieleC88
08-04-2005, 16:04
Mah, è strano, allora. Vabbe', l'importante è non avere più il problema, no? ;)

cipi
08-04-2005, 16:28
Originariamente inviato da DanieleC88
Mah, è strano, allora. Vabbe', l'importante è non avere più il problema, no? ;)

già... ma avrei preferito capire!!! vabbè....:boh:

RaouL_BennetH
09-04-2005, 10:58
Originariamente inviato da cipi
Lo strano è che non entra mai nell'if.....

Uhm.. non che io sia una cima, anzi... ma vorrei cercare di capire pure io e perdonate in anticipo le mie stupidaggini:

Se non ho capito male, tu apri un file per scriverci dentro e, fin quando non hai messo la condizione if......==NULL, ti andava in segmentation fault.

Ora, hai inserito la condizione ma, pur non verificando la condizione non hai più il problema. Mi chiedevo quindi due cose:

1) Come fai a dire che la condizione non venga verificata?

2) Potrebbe essere invece che l'errore sia ancora presente ma, proprio perchè la condizione viene verificata il programma lo gestisca correttamente?

Thx.

RaouL.

cipi
13-04-2005, 11:16
Il motivo è che il mio controllo era:

if(f1==null)
{
invia_messaggio_errore;
exit(-1);
}
Mi sembra di essere sicuro che li non cada... :D

VegetaSSJ5
13-04-2005, 17:50
puoi postare il codice??

cipi
14-04-2005, 08:24
potrei ma sono oltre 1000 righe... se vuoi ti spedisco via mail se mi mandi un pvt...

DanieleC88
14-04-2005, 12:49
potrei ma sono oltre 1000 righe... se vuoi ti spedisco via mail se mi mandi un pvt...
Ma non tutto! :eek:
Mandane solo un estratto, la parte incriminata, almeno.