2016-04-09 17 views
2

我是新來的valgrind。我在Ubuntu 15.10上使用Qt 5.5.1庫編寫了一個C++程序。我正在使用帶有Debug版本集的Qt Creator。我檢查了使用Valgrind的使用下面的命令內存泄漏:從Qt或我的程序出現這個錯誤?

valgrind --leak-check=yes --track-origins=yes ./texteditor 

Valgrind的,然後給了我下面的消息:

==2977== Conditional jump or move depends on uninitialised value(s) 
==2977== at 0x97ED1EC: ??? (in /usr/lib/i386-linux-gnu/libgtk-x11-2.0.so.0.2400.28) 
==2977== by 0x97EE58A: ??? (in /usr/lib/i386-linux-gnu/libgtk-x11-2.0.so.0.2400.28) 
==2977== by 0x5B3380B: g_cclosure_marshal_VOID__VOID (in /usr/lib/i386-linux-gnu/libgobject-2.0.so.0.4600.2) 
==2977== by 0x5B31B8A: g_closure_invoke (in /usr/lib/i386-linux-gnu/libgobject-2.0.so.0.4600.2) 
==2977== by 0x5B43FFB: ??? (in /usr/lib/i386-linux-gnu/libgobject-2.0.so.0.4600.2) 
==2977== by 0x5B4CC95: g_signal_emit_valist (in /usr/lib/i386-linux-gnu/libgobject-2.0.so.0.4600.2) 
==2977== by 0x5B4CFC4: g_signal_emit (in /usr/lib/i386-linux-gnu/libgobject-2.0.so.0.4600.2) 
==2977== by 0x96ECD00: gtk_adjustment_changed (in /usr/lib/i386-linux-gnu/libgtk-x11-2.0.so.0.2400.28) 
==2977== by 0x5B35465: ??? (in /usr/lib/i386-linux-gnu/libgobject-2.0.so.0.4600.2) 
==2977== by 0x5B384FC: g_object_thaw_notify (in /usr/lib/i386-linux-gnu/libgobject-2.0.so.0.4600.2) 
==2977== by 0x96ED182: gtk_adjustment_configure (in /usr/lib/i386-linux-gnu/libgtk-x11-2.0.so.0.2400.28) 
==2977== by 0x4563C7F: ??? (in /home/tembo/Qt/5.5/gcc/lib/libQt5Widgets.so.5.5.1) 
==2977== Uninitialised value was created by a stack allocation 
==2977== at 0x456215F: ??? (in /home/tembo/Qt/5.5/gcc/lib/libQt5Widgets.so.5.5.1) 

從以上消息沒有點myProgram的位置都沒有。這是來自Qt和其他庫,還是我錯過指向myProgram的東西?

+2

嘗試用調試信息('-g -O0')編譯你的程序並再次運行'valgrind'。 – Drop

+0

@Drop,我正在使用Qt Creator進行編譯,並將其設置爲Debug構建,否則-g從Debug構建延遲? – Amani

+0

你需要編譯Qt本身的調試信息......('-debug'切換到配置) – peppe

回答

2

默認情況下,Valgrind只顯示調用堆棧的前12個條目,但可以使用參數​​更改。來自您自己的程序代碼的功能可能會進一步降低。

+0

還要注意,調試版本(根據註釋)也會增加調用堆棧的需求,因爲函數不會內聯。 –

相關問題