Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Funzione inaccessibile da GDB
Forum - C/C++ - Funzione inaccessibile da GDB

Avatar
Riccardo4444 (Normal User)
Newbie


Messaggi: 7
Iscritto: 21/12/2010

Segnala al moderatore
Postato alle 14:46
Sabato, 05/05/2012
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:

Codice sorgente - presumibilmente C++

  1. int compare(char *_ipstr, char *_filename)
  2. {
  3.  
  4.     char _ipbuf[IPBUFSIZ+1];
  5.  
  6.         while (1) {            
  7.                 if (fgets(_ipbuf, IPBUFSIZ+1, list) != NULL) {
  8.                         if (!strcmp(_ipbuf, _ipstr))
  9.                                 return -1;
  10.                 } else if (ferror(list)) {
  11.                         fprintf(stderr, "Cannot read %s.\n", _filename);
  12.                         exit(2);
  13.                 } else
  14.                         return 0;
  15.         }
  16.        
  17. }



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.

PM Quote