cmake und gdb

Der Wolf

Erfahrenes Mitglied
Hallo Leute,

vielleicht gibt es ja einen ähnlichen Thread schon hier im Forum, aber bisher habe ich nirgends was passendes gefunden und mir geht nach fast 9 Stunden die Puste aus. Deswegen versuche ich es nun doch auf diesem Weg, auch wenn ich mich damit vielleicht in die Nesseln setze. ;-)

Also, bei der Entwicklung meines Programms ist es leider zu Fehlern gekommen, die, ganz toller Weise, immer an unterschiedlichen Stellen im Code auftreten ... sind allerdings nur 3-4 verschiedene Stellen bisher, glaube ich. ;-)

Ich wollte daher mein Programm mit dem GDB debuggen was auch so ganz gut klappt. Leider zeigt er mir bei meinen Funktionen nur an, welche Funktion gerade abgearbeitet wird, aber nicht in welcher Zeile es zu dem Segmentation fault kommt. Die Zeilenangabe bekomme ich nur bei den Bibliotheken die ich habe einbinden lassen. Das sieht für mich so aus, als würde der Code nicht mit der -g Option kompiliert werden. Aber ich habe sie eigentlich per ccmake mit angegeben. Vllt sieht einer von euch den Fehler. Ich sehe den Wald langsam vor lauter Bäumen nicht mehr. Ich habe ein Bild angehängt, wo alle Optionen angezeigt sind, die ich per ccmake . angegeben habe.

Schonmal Danke im Voraus.

Gruß
Ein müder Wolf.
 

Anhänge

  • Image.jpg
    Image.jpg
    113,7 KB · Aufrufe: 149
Hi.

Warum schaust du nicht ins Build-Log (CMakeFiles/CMakeOutput.log) mit welchen Optionen der Compiler wirklich aufgerufen wurde?

Gruß
 
Hmm ... ehrlich gesagt habe ich das nicht gemacht, weil ich mich mit cmake nicht soooo gut auskenne und nicht wusste das der diese log Datei anlegt. Danke schonmal
für den Tipp.

Ich habe jetzt einfach auch mal folgendes versucht:

Code:
  cmake .
  make VERBOSE=1

Dadurch konnte ich im Terminal verfolgen was genau der compiler macht und ausgegeben hat er folgendes:

/usr/bin/c++ -o -g -gdwarf-2 ....

also sollte der Code mit debug makros versehen sein. Dann liegt der Fehler woanders. Oder sehe ich das falsch, dass der gdb mir normalerweise in meinem Code auch die Zeile angeben sollte wo es zum Crash gekommen ist und nicht nur die Funktion in der es passiert ist?

Gruß
Der Wolf
 
Zuletzt bearbeitet:
Hi.

Warum hast du denn dort überall "-o -g" drin stehen? Also, wozu das "-o"? Meintest du evlt. "-O"? Und evtl. solltest du den CMAKE_BUILD_TYPE mal auf Debug setzen...

Gruß
 
Hmm ... keine Chance. Ich habe jetzt einmal das -o durch -O ersetzt und den Parameter einmal komplett weg gelassen. CMAKE_BUILD_TYPE steht dabei die ganze Zeit auf Debug aber ich bekomme durch gdb trotzdem nur Ausgaben wie die folgende:

Code:
#12 0xb730f135 in xmltio::Location::operator[] (this=0xbfdb0f30, 
    xpath=@0xbfdb0f48) at Location.cpp:155
---Type <return> to continue, or q <return> to quit---
#13 0xb730ff1c in Location (this=0xbfdb1088, xml=@0xbfdb10ec, 
    xpath=@0xbfdb10e0) at Location.cpp:86
#14 0x080999de in FaceAnchor::getDocument ()
#15 0x0809813f in AnchorList::updateActiveMemory ()
#16 0x0809b181 in FaceAnchorList::updateAnchors ()
#17 0x0806c6fb in main ()

Dabei wäre wirklich interessant, wo genau der Fehler in der getDocument() autaucht.
 

Neue Beiträge

Zurück