2012-05-17 17 views
5

Ich bin komisch Seg Fehler, die von irgendwo nicht in meinem Programm kommen scheint ... nicht explizit trotzdem. Ich rufe "strcmp" auf zwei Arrays auf ... Beide Arrays sind im selben Typ von Strukturen gespeichert. Ich bin eins mit der Punktnotation bekommen und ein durch dereferencing mit „->“:Segmentation Fault: "... keine solche Datei oder Verzeichnis"

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

Es kompiliert gut, aber wenn ich es laufen bekomme ich die seg Fehler. Ich habe versucht, es mit GDB aufzuspüren, aber wenn ich Breakpoints direkt davor einfüge, wo ich denke, dass es auftreten sollte, segeln sie trotzdem Fehler. Ich bekomme:

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. Vorschläge? Vielen Dank!

+1

Haben Sie versucht, ein Backtrace, wenn es in gdb segfaults? –

+2

Was ist der Wert von 'one.name',' two' und 'two-> name' zum Zeitpunkt des Aufrufs? – Mud

+3

Sie haben einen Segmentierungsfehler festgestellt, und die Quelle für 'strcmp' ist in Ihrer Umgebung nicht vorhanden. Wenn das System nach * sucht, * tritt der Seg-Fehler auf. Die Quelle ist nicht erforderlich, um zu sein, es ist eine Standard-Bibliothek-Funktion. Das Problem ist, dass Sie die Grenzen des Speichers an einem anderen Ort überschreiben. Running Ihr Programm mit Valgrind oder ein Speicher-Analyse-Tool sollte die genauen Details, wo. –

Antwort

2

Mein Vorschlag: Kompilieren Sie es mit -g und führen Sie es durch Valgrind.

Verwandte Themen