ดูเหมือนว่าธง Cmake สำหรับการดีบักจะไม่มีประโยชน์ใน valgrind ใช่ไหม

ตกลง ฉันมีแอปพลิเคชัน Qt นี้ที่ฉันกำลังพยายามแก้ไขจุดบกพร่อง เมื่อเรียกใช้ valgrind และเปลี่ยนเส้นทางเอาต์พุตไปยังไฟล์ ฉันเห็นบล็อก 'สูญหายแน่นอน' จำนวนมากที่มีลักษณะดังนี้ ซึ่งทำให้ฉันเสียใจ:

==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)

ฉันไม่เก่งกับ valgrind มากนัก แต่เท่าที่ฉันสามารถบอกได้ การติดตามนี้จะไม่กลับไปที่ไฟล์ต้นฉบับของฉันใช่ไหม ในความเป็นจริง ไม่มีที่ใดในรายงาน valgrind ฉบับเต็ม (ด้วยสวิตช์ -v) ที่ไฟล์ต้นฉบับของฉันปรากฏ ยกเว้นใน main() ที่ฉันประกาศ QApplication

ถ้าอย่างนั้นฉันสามารถสรุปได้ว่าฉันไม่ได้รวบรวมโปรเจ็กต์ของฉันด้วย CMake อย่างถูกต้องหรือไม่ หวังว่านั่นจะเป็นปัญหา เพราะรายงาน valgrind ดูเหมือนจะไม่มีประโยชน์กับฉันมากนักในตอนนี้

ในตอนนี้ ใน CmakeLists.txt ของฉัน ฉัน (พยายาม) รวบรวมโปรเจ็กต์ด้วยแฟล็กดีบักดังนี้:

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

นี่เป็นวิธีที่เหมาะสมในการทำเช่นนี้หรือไม่?

ฉันทำอะไรผิดที่นี่?

ขอขอบคุณและขออภัยสำหรับคำถามที่ยาวเช่นนี้! :/


person Daniel    schedule 07.07.2012    source แหล่งที่มา


คำตอบ (1)


ขั้นตอนปกติคือการตั้งค่าตัวแปร CMAKE_BUILD_TYPE เป็น Debug, Release หรืออื่นๆ ในระหว่างขั้นตอนการกำหนดค่า ซึ่งสามารถทำได้โดยใช้แฟล็ก -D สำหรับเครื่องมือบรรทัดคำสั่ง cmake หรือโดยการแก้ไขฟิลด์ที่เหมาะสมใน GUI

หากคุณต้องการส่งแฟล็กเพิ่มเติมไปยังคอมไพลเลอร์ ให้ตั้งค่า CMAKE_CXX_FLAGS เช่นเดียวกับที่คุณตั้งค่า CMAKE_BUILD_TYPE

อย่างที่คุณเห็น สิ่งนี้ไม่ได้เกี่ยวข้องกับการแก้ไขไฟล์ CMakeLists.txt ใด ๆ แต่เป็น CMakeCache.txt ใน build dir ของคุณ

person arrowd    schedule 08.07.2012