Ich benutze Scientific Linux (SL). Ich versuche, ein Projekt zu kompilieren, das eine Reihe von C ++ (.cpp) -Dateien verwendet.
In das Verzeichnis gebe user/project/Build
ich ein make
, um alle CPP-Dateien zu kompilieren und zu verknüpfen. Ich muss dann gehen user/run/
und dann tippen./run.sh values.txt
Um mit GDB zu debuggen, muss ich gehen user/run
und dann gdb ../project/Build/bin/Project
eingeben und ausführen, ich gebe ein run -Project INPUT/inputfile.txt
. Ich versuche jedoch, den Wert der Variablen mit auszudrucken p variablename
.
Ich bekomme jedoch die Nachricht s1 = <value optimized out>
. Ich habe online recherchiert und es scheint, dass ich ohne Optimierungen kompilieren muss -O0
, um dies zu beheben. Aber wo gebe ich das ein? In der CMakeLists
? Wenn ja, welche CMakeLists? Der in project/Build
oder project/src/project
?
quelle
cmake -DCMAKE_BUILD_TYPE=DEBUG ..
Antworten:
Die Antwort von Chip war hilfreich, da die
SET
ZeileCMAKE_CXX_FLAGS_DEBUG
dies überschrieb , wurde der-g
Standardwert entfernt, der dazu führte , dass meine ausführbare Datei ohne Debug-Informationen erstellt wurde. Ich musste eine kleine zusätzliche Änderung an CMakeLists.txt im Projektquellverzeichnis vornehmen, um eine ausführbare Datei zu erhalten, die Debugging-Informationen und-O0
Optimierungen enthält (unter cmake Version 2.8.12.2).Ich habe Folgendes zu CMakeLists.txt hinzugefügt, um es hinzuzufügen
-O0
und-g
aktiviert zu lassen:Dies fügt die
-O0
Optimierung den Flags hinzu, die bereits für das Debugging von CMake verwendet wurden, und ist nur für GCC-Builds enthalten, wenn Sie zufällig ein plattformübergreifendes Projekt verwenden.quelle
Oder zum Zeitpunkt des Aufrufs:
und bestätigen Sie mit:
Zeigen Sie die GCC-Build-Befehle wie folgt an: /programming/5820303/how-do-i-force-make-gcc-to-show-me-the-commands
Getestet unter Ubuntu 17.04, CMake 3.7.2.
quelle
Fügen Sie dies zu CMakeLists.txt hinzu (das im Projektquellverzeichnis; berühren Sie nichts im Erstellungsverzeichnis):
und dann
wird funktionieren. Alternativ können Sie dies auch zu CMakeLists.txt hinzufügen:
quelle