Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : nicht lokalisierbarer sementation fault mit lefence?



nobody0
06-09-2002, 01:23
Arbeitet das lefence auch bei C++-Programmen richtig? :confused:

Ich habe nämlich ein C++-Programm einmal mit dieser Funktion in profile compiliert:

# Funktion zum Kompilieren. Bsp.: "h bsp" kompiliert bsp.c und produziert bsp.
function g {
g++ -O3 -D__SMP__ -D_REENTRANT -mcpu=i686 -fexpensive-optimizations -DCPU=686 -ffast-math -m486 -lm -Wall -o $1 $1.c; strip $1
}

und einmal mit dieser Funktion:

# Funktion zum Kompilieren mit lefence u. zus. gdb-Informationen.
# Bsp.: "h bsp" kompiliert bsp.c und produziert bsp.
# Version von function c zum auffinden von Bereichsüberschreitungen (Segmentation faults).
# Benötigt: efence (Electric Fence). # -lvga
function h {
g++ -O3 -D__SMP__ -D_REENTRANT -lm -lvga -Wall -pedantic -ggdb -lefence -o $1 $1.c
}

Und nur mit der 2., also mit lefence, bekomme ich ein Segmentation fault, der sofort beim Start von main passiert, wie list zeigt:

823 fflush(ofp);
824 if ( ofp != NULL )
825 fclose(ofp);
826 ofp=NULL;
827 return(0);
828 }
829
830 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
831
832 int main()

Funktioniert das lefence bei C++-Programmen nicht richtig? :confused:

anda_skoa
06-09-2002, 10:11
Vielleicht kannst du statt efence was anderes benutzen.
valgrind zum Beispiel: http://developer.kde.org/~sewardj/

Ciao,
_

nobody0
06-09-2002, 20:01
Aha, danke, das sieht ja besser aus, weil das nicht erst bei der Ausführung aktiv wird. Hoffentlich funktioniert das auch dem g++ gut.

Trillian
06-09-2002, 21:57
Mit GCC generell gibts da keine Probleme, nur 3.x mag er nicht :D

nobody0
07-09-2002, 00:03
Aha, naja mir ist schon aufgefallen, dass er mit dem von mir bevorzugten -O3 nicht richtig arbeitet.