好的,所以我有这个我正在尝试调试的 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 开关)中没有出现我的源文件,除了在我声明 QApplication 的 main() 中。
那么我可以假设我没有用 CMake 正确编译我的项目吗?希望这就是问题所在,因为 valgrind 报告现在似乎对我没有太大帮助..
现在,在我的 CmakeLists.txt 中,我(尝试)使用调试标志编译项目,如下所示:
set(CMAKE_CXX_FLAGS_DEBUG "-g3 -ggdb -O0")
这是这样做的正确方法吗?
我在这里做错了吗?
谢谢,抱歉这么长的问题!:/