Estou usando o Scientific Linux (SL). Estou tentando compilar um projeto que usa um monte de arquivos C ++ (.cpp).
No diretório user/project/Build
, entro make
para compilar e vincular todos os arquivos .cpp. Eu então tenho que ir user/run/
e digitar./run.sh values.txt
Para depurar com o GDB, eu tenho que ir user/run
e digitar gdb ../project/Build/bin/Project
e executar, eu entro run -Project INPUT/inputfile.txt
. No entanto, estou tentando imprimir o valor da variável usando p variablename
.
No entanto, recebo a mensagem s1 = <value optimized out>
. Eu fiz algumas pesquisas online e parece que preciso compilar sem otimizações -O0
para resolver isso. Mas onde eu entro nisso? No CMakeLists
? Se sim, qual CMakeLists? Aquele em project/Build
ou project/src/project
?
fonte
cmake -DCMAKE_BUILD_TYPE=DEBUG ..
Respostas:
A resposta de Chip foi útil, no entanto, uma vez que a
SET
linha substituiuCMAKE_CXX_FLAGS_DEBUG
isso, removeu o-g
padrão que causou a criação do meu executável sem informações de depuração. Eu precisava fazer uma pequena modificação adicional no CMakeLists.txt no diretório de origem do projeto para criar um executável com informações e-O0
otimizações de depuração (no cmake versão 2.8.12.2).Adicionei o seguinte ao CMakeLists.txt para adicionar
-O0
e deixar-g
ativado:Isso adiciona a
-O0
otimização aos sinalizadores já usados para depuração pelo CMake e só é incluído para compilações do GCC se você estiver usando um projeto de plataforma cruzada.fonte
Ou no momento da invocação:
e depois confirme com:
para mostrar os comandos de construção do GCC, conforme explicado em: /programming/5820303/how-do-i-force-make-gcc-to-show-me-the-commands
Testado no Ubuntu 17.04, CMake 3.7.2.
fonte
Adicione isso ao CMakeLists.txt (aquele no diretório de origem do projeto; não toque em nada no diretório de construção):
e depois
vai funcionar. Como alternativa, basta adicionar isso ao CMakeLists.txt:
fonte