J'utilise Scientific Linux (SL). J'essaie de compiler un projet qui utilise un tas de fichiers C ++ (.cpp).
Dans le répertoire user/project/Build
, j'entre make
pour compiler et lier tous les fichiers .cpp. Je dois ensuite aller user/run/
et taper./run.sh values.txt
Pour déboguer avec GDB, je dois aller user/run
puis taper gdb ../project/Build/bin/Project
et pour exécuter, j'entre run -Project INPUT/inputfile.txt
. Cependant, j'essaie d'imprimer la valeur de la variable en utilisant p variablename
.
Cependant, je reçois le message s1 = <value optimized out>
. J'ai fait quelques recherches en ligne, et il semble que je doive compiler sans optimisations à l'aide -O0
de résoudre ce problème. Mais où dois-je entrer cela? Dans le CMakeLists
? Si oui, quelles CMakeLists? Celui dans project/Build
ou project/src/project
?
la source
cmake -DCMAKE_BUILD_TYPE=DEBUG ..
Réponses:
La réponse de Chip a été utile, cependant, car la
SET
ligne a écraséCMAKE_CXX_FLAGS_DEBUG
cela, ce qui a supprimé la-g
valeur par défaut, ce qui a provoqué la construction de mon exécutable sans informations de débogage. J'ai dû apporter une petite modification supplémentaire à CMakeLists.txt dans le répertoire source du projet pour obtenir un exécutable construit avec des informations de débogage et des-O0
optimisations (sur cmake version 2.8.12.2).J'ai ajouté ce qui suit à CMakeLists.txt pour ajouter
-O0
et laisser-g
activé:Cela ajoute l'
-O0
optimisation aux indicateurs déjà utilisés pour le débogage par CMake et n'est inclus pour les générations GCC que si vous utilisez un projet multiplateforme.la source
Ou au moment de l'invocation:
puis confirmez avec:
pour afficher les commandes de génération GCC comme expliqué sur: /programming/5820303/how-do-i-force-make-gcc-to-show-me-the-commands
Testé sur Ubuntu 17.04, CMake 3.7.2.
la source
Ajoutez ceci à CMakeLists.txt (celui du répertoire source du projet; ne touchez à rien dans le répertoire de construction):
puis
marchera. Alternativement, ajoutez simplement ceci à CMakeLists.txt:
la source