Флаги 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? Надеюсь, что это проблема, потому что отчет о Вальгринде не кажется мне слишком полезным прямо сейчас.

Теперь, в моем CmakeLists.txt, я (пытаюсь) скомпилировать проект с флагами отладки, например так:

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

это правильный способ сделать это?

Я что-то здесь не так делаю?

Спасибо, и извините за такой длинный вопрос!:/

1 ответ

Обычная процедура заключается в установке CMAKE_BUILD_TYPE переменная к Debug, Releaseи т. д. на этапе настройки. Это может быть достигнуто с помощью -D флаг для командной строки cmake инструмент, или путем изменения соответствующего поля в графическом интерфейсе.

Если вы хотите передать дополнительные флаги компилятору, просто установите CMAKE_CXX_FLAGS так же, как вы установили CMAKE_BUILD_TYPE,

Как вы видите, это не затрагивает изменение любого из CMakeLists.txt файлы, но CMakeCache.txt в вашей сборке реж.

Другие вопросы по тегам