Oppure

Loading
05/05/12 12:46
Riccardo4444
Ciao
Sto scrivendo un programma, ma arrivato ad un certo punto esso fa cose inappropriate. Da ciò che sono riuscito a capire usando il debugger GDB, questo comportamento anormale è dovuto, molto probabilmente, ad una funzione che chiamo nella funzione principale, ovvero compare(), la quale "modifica", in un certo senso, il comportamento della stringa _ipstr che le passo quando questa successivamente interagisce in altri modi nel programma. In particolare, quando faccio il debug del mio programma, passo-passo, con GDB, arrivato al punto di compare(), se premo s, GDB non accede alla funzione e non continua neance il debug riga per riga, bensì fa continuare il programma da solo fino alla fine.

Ecco il codice di compare(), se vi dovessero essere dei problemi:

int compare(char *_ipstr, char *_filename)
{

    char _ipbuf[IPBUFSIZ+1];

    	while (1) {		
		if (fgets(_ipbuf, IPBUFSIZ+1, list) != NULL) {
			if (!strcmp(_ipbuf, _ipstr))
				return -1;
		} else if (ferror(list)) {
			fprintf(stderr, "Cannot read %s.\n", _filename);
			exit(2);
		} else
			return 0;
	}
	
}


Ultimi chiarimenti: uso Linux, con compilatore GCC (ho specificato l'opzione -g per il debug). Quest'ultimo non mi dà nessun errore nella compilazione, e tra l'altro ho già testato le altre parti del programma (tra cui l'integrità del file segnato da list), che sono a posto. IPBUFSIZ nel programma ha valore 15.
aaa