2012-05-17 25 views
5

Ricevo una strana seg fault che sembra provenire da qualche parte non nel mio programma ... non esplicitamente in ogni caso. Sto chiamando "strcmp" su due array ... Entrambi gli array sono memorizzati nello stesso tipo di strutture. Sto diventando un tutt'uno con la notazione punto e uno attraverso dereferenziazione con "->":Errore di segmentazione: "... nessun file o directory"

int name = strcmp(one.name, two->name); 

Si compila bene, ma quando l'eseguo ottengo l'errore seg. Ho provato a rintracciarlo con GDB ma quando inserisco i punti di interruzione appena prima di dove penso che dovrebbe accadere, seg segna comunque i difetti. Ricevo:

Program received signal SIGSEGV, Segmentation fault. 
__strcmp_ia32() at ../sysdeps/i386/i686/multiarch/../strcmp.S:40 
40 ../sysdeps/i386/i686/multiarch/../strcmp.S: No such file or directory. 
    in ../sysdeps/i386/i686/multiarch/../strcmp.S 

FML. Suggerimenti? Grazie!

+1

Hai provato un backtrace quando segfaults in gdb? –

+2

Qual è il valore di 'one.name',' two' e 'two-> name' nel punto di chiamata? – Mud

+3

Si è verificato un errore di segmentazione e l'origine per 'strcmp' non esiste nel proprio ambiente, quando il sistema prova a cercarlo * dopo * si è verificato l'errore seg. La sorgente non è necessaria per essere presente è una funzione di libreria standard. Il problema è che si stanno sovrascrivendo i limiti della memoria in un altro posto. Eseguire il programma con valgrind o uno strumento di analisi della memoria dovrebbe fornire i dettagli esatti di dove. –

risposta

2

Il mio consiglio: Compilalo con -g ed eseguilo attraverso valgrind.

Problemi correlati