Bendera cmake untuk debugging sepertinya tidak berguna di valgrind?

Oke, jadi saya punya aplikasi Qt yang saya coba debug; setelah menjalankan valgrind di atasnya dan mengarahkan output ke file, saya melihat banyak blok 'pasti hilang' yang terlihat seperti ini, yang membuat saya sedih:

==24357== 24 bytes in 1 blocks are definitely lost in loss record 150 of 508
==24357==    at 0x4C2C56F: malloc (vg_replace_malloc.c:267)
==24357==    by 0x76ED3CA: FcPatternCreate (in /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.4.4)
==24357==    by 0x76EB3CD: FcFontRenderPrepare (in /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.4.4)
==24357==    by 0x76EB66C: FcFontMatch (in /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.4.4)
==24357==    by 0x57163D7: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/x86_64-linux-gnu/libQtGui.so.4.8.1)
==24357==    by 0x56F3586: QFontPrivate::engineForScript(int) const (in /usr/lib/x86_64-linux-gnu/libQtGui.so.4.8.1)
==24357==    by 0x5728482: ??? (in /usr/lib/x86_64-linux-gnu/libQtGui.so.4.8.1)
==24357==    by 0x573B73D: QTextLine::layout_helper(int) (in /usr/lib/x86_64-linux-gnu/libQtGui.so.4.8.1)
==24357==    by 0x573D5A4: QTextLayout::endLayout() (in /usr/lib/x86_64-linux-gnu/libQtGui.so.4.8.1)
==24357==    by 0x58F33CE: QLineControl::updateDisplayText(bool) (in /usr/lib/x86_64-linux-gnu/libQtGui.so.4.8.1)
==24357==    by 0x58F36C6: QLineControl::init(QString const&) (in /usr/lib/x86_64-linux-gnu/libQtGui.so.4.8.1)
==24357==    by 0x58EC720: ??? (in /usr/lib/x86_64-linux-gnu/libQtGui.so.4.8.1)

Saya tidak terlalu mahir menggunakan valgrind, tetapi sejauh yang saya tahu, jejak ini tidak kembali ke file sumber saya, bukan? Faktanya, tidak ada tempat dalam laporan valgrind lengkap (dengan tombol -v) file sumber saya muncul, kecuali di main() tempat saya mendeklarasikan QApplication.

Lalu bisakah saya berasumsi bahwa saya tidak mengkompilasi proyek saya dengan CMake dengan benar? Mudah-mudahan itu masalahnya, karena laporan valgrind sepertinya tidak terlalu membantu saya saat ini..

Sekarang, di CmakeLists.txt saya, saya (mencoba) mengkompilasi proyek dengan flag debug seperti:

 set(CMAKE_CXX_FLAGS_DEBUG "-g3 -ggdb -O0")

apakah ini cara yang tepat untuk melakukan ini?

Apakah saya melakukan sesuatu yang salah di sini?

Terima kasih, dan maaf atas pertanyaan yang panjang! :/


person Daniel    schedule 07.07.2012    source sumber


Jawaban (1)


Prosedur yang biasa dilakukan adalah menyetel variabel CMAKE_BUILD_TYPE ke Debug, Release, atau lain-lain selama tahap konfigurasi. Hal ini dapat dicapai dengan menggunakan tanda -D untuk alat cmake baris perintah, atau dengan memodifikasi bidang yang sesuai di GUI.

Jika Anda ingin meneruskan tanda tambahan ke kompiler, setel saja CMAKE_CXX_FLAGS dengan cara yang sama seperti Anda menyetel CMAKE_BUILD_TYPE.

Seperti yang Anda lihat, ini tidak melibatkan modifikasi file CMakeLists.txt apa pun, tetapi CMakeCache.txt di direktori build Anda.

person arrowd    schedule 08.07.2012