Saya menggunakan Scientific Linux (SL). Saya mencoba mengkompilasi proyek yang menggunakan banyak file C ++ (.cpp).
Dalam direktori user/project/Build
, saya masuk make
untuk mengkompilasi dan menautkan semua file .cpp. Saya kemudian harus pergi ke user/run/
dan kemudian ketik./run.sh values.txt
Untuk debug dengan GDB, saya harus pergi ke user/run
dan kemudian ketik gdb ../project/Build/bin/Project
dan jalankan, saya masukkan run -Project INPUT/inputfile.txt
. Namun, saya mencoba untuk mencetak nilai variabel menggunakan p variablename
.
Namun, saya menerima pesan itu s1 = <value optimized out>
. Saya telah melakukan riset online, dan sepertinya saya perlu mengkompilasi tanpa optimisasi -O0
untuk menyelesaikannya. Tapi di mana saya memasukkan itu? Di dalam CMakeLists
? Jika demikian, CMakeLists yang mana? Yang di project/Build
atau project/src/project
?
sumber
cmake -DCMAKE_BUILD_TYPE=DEBUG ..
Jawaban:
Jawaban Chip sangat membantu, namun karena
SET
baris menimpaCMAKE_CXX_FLAGS_DEBUG
ini menghapus-g
default yang menyebabkan executable saya dibangun tanpa info debug. Saya perlu membuat sedikit modifikasi tambahan ke CMakeLists.txt di direktori sumber proyek untuk mendapatkan executable yang dibangun dengan info debug dan-O0
optimisasi (pada cmake versi 2.8.12.2).Saya menambahkan yang berikut ke CMakeLists.txt untuk menambah
-O0
dan membiarkan-g
diaktifkan:Ini menambahkan
-O0
optimasi ke flag yang sudah digunakan untuk debug oleh CMake dan hanya disertakan untuk build GCC jika Anda kebetulan menggunakan proyek lintas platform.sumber
Atau pada waktu doa:
dan kemudian konfirmasikan dengan:
untuk memperlihatkan perintah pembuatan GCC seperti yang dijelaskan di: /programming/5820303/how-do-i-force-make-gcc-to-show-me-the-commands
Diuji pada Ubuntu 17.04, CMake 3.7.2.
sumber
Tambahkan ini ke CMakeLists.txt (yang ada di direktori sumber proyek; jangan sentuh apa pun di direktori build):
lalu
akan bekerja. Atau tambahkan saja ini ke CMakeLists.txt:
sumber