Флаги 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 командной строки или изменив соответствующее поле в графическом интерфейсе.

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

Как видите, это не требует изменения каких-либо CMakeLists.txt файлов, но CMakeCache.txt в вашем каталоге сборки.

person arrowd    schedule 08.07.2012