2012-07-07 18 views
0

好吧,所以我有這個Qt應用程序,我試圖調試; 在其上運行的valgrind和輸出重定向到一個文件中,我看到很多一些「肯定失去了」塊,看起來這樣的事情,這讓我傷心:用於調試的Cmake標誌在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") 

這是一個正確的方法嗎?

我在這裏做錯了什麼?

謝謝,並且對於如此長的問題抱歉! :/

回答

0

通常的程序是在配置階段CMAKE_BUILD_TYPE變量設置爲DebugRelease,或等等。這可以通過對命令行cmake工具使用-D標誌或通過在GUI中修改適當的字段來實現。

如果您希望將額外標誌傳遞給編譯器,只需按照您設置CMAKE_BUILD_TYPE的方式設置CMAKE_CXX_FLAGS即可。

如您所見,這不會修改任何CMakeLists.txt文件,但CMakeCache.txt在您的構建目錄中。

相關問題