Frage zu compiler, linker uns sigsegv

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Epcop
Beiträge: 159
Registriert: Di 29. Mai 2012, 09:36

Frage zu compiler, linker uns sigsegv

Beitrag von Epcop »

Hallo,

meine Frage bezieht sich auf folgenden Beitrag: http://www.lazarusforum.de/viewtopic.php?p=30775

Nachdem ich manchmal auch sigsegv Fehler bekomme - die offenbar "zufällig" auftretten -, wollte ich dem ganzen mal gründlich auf den Grund gehen.

Ich bin dann nach folgender Anleitung gegangen, wie in dem Beitrag beschrieben:
Es gibt eine sehr effektive Methode, den SIGSEgVs auf den Grund zu gehen - welche von mse schon angerissen wurden. Hier eine Anleitung:

1. Im Menü Projekt-->Compilereinstellungen-->Linken bei "Heaptrc-Unit verwenden" ein Häckchen machen.
2. Start-->Alles kompilieren
3. Das fertig kompilierte Programm von der Konsole aus öffnen.
4. Die Aktion ausführen, die zur SIGSEV geführt hat. Dann das Programm beenden.
Nun habe ich erwartet, das mein sigsegv Fehler mit der Zeile usw. angezeigt zu bekommen. Tut es aber nicht. Und der sigsegv Fehler ist verschwunden ohne das ich was im Code geändert habe. Gibt es eine erklärung dafür? Was tut Heaptrc-Unit genau?? Und eigentlich hat der Linker ja mit meinen Code relativ wenig zu tun? Wo ist mein Fehler hingekommen??? (ich bin ja froh das er weg ist - aber warum?? ich weiß noch nichtmal genau, warum er überhaupt da war...)

Lg
Epcop

martin_frb
Beiträge: 586
Registriert: Mi 25. Mär 2009, 21:12
OS, Lazarus, FPC: Laz trunk / fpc latest release / Win and other
CPU-Target: mostly 32 bit

Re: Frage zu compiler, linker uns sigsegv

Beitrag von martin_frb »

SigSegv sind schwer zu finden, und es gibt keinen "das ist der Weg"....

Probiere mal:
-gt oder -gtt oder -gttt

Dann probiere -CR (nur dein Projekt, nicht die LCL. DIe LCL läuft nicht mit -CR)

gh ist gut fuer leaks.

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Frage zu compiler, linker uns sigsegv

Beitrag von mse »

martin_frb hat geschrieben: gh ist gut fuer leaks.
Nicht nur. Heaptrace füllt freigegeben Speicher mit Müll, markiert mit "DEADBEEF" und überwacht das Überschreiben von allozierten Blockgrenzen.
Mit der Option {$CHECKPOINTER ON} wird jeder Pointerzugriff überprüft.
http://www.freepascal.org/docs-html/pro ... 130001.1.8
Epcop hat geschrieben:Nun habe ich erwartet, das mein sigsegv Fehler mit der Zeile usw. angezeigt zu bekommen. Tut es aber nicht.
Was tut es stattdessen? Gibt es beim Kompilieren Warnungen?

Epcop
Beiträge: 159
Registriert: Di 29. Mai 2012, 09:36

Re: Frage zu compiler, linker uns sigsegv

Beitrag von Epcop »

mse hat geschrieben:
Epcop hat geschrieben:Nun habe ich erwartet, das mein sigsegv Fehler mit der Zeile usw. angezeigt zu bekommen. Tut es aber nicht.
Was tut es stattdessen? Gibt es beim Kompilieren Warnungen?
Keine Warnungen, keine Fehler, als ob nie etwas gewesen ist... Alles läuft plötzlich Tadellos.

Antworten