2016-04-09 19 views
2

Ben valgrind için yeniyim. Ubuntu 15.10'da Qt 5.5.1 kütüphanelerini kullanarak C++ program yazdım. Debug oluşturma kümesi ile Qt Creator kullanıyorum. Aşağıdaki komutla Valgrind kullanarak bellek sızıntıları kontrol: hiç MyProgram konumuna yukarıdaki mesajı şey noktalardanQt veya programımdaki bu hata mı?

==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) 

:

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

Valgrind sonra bana aşağıdaki mesajı veriyor. Bu, Qt ve diğer kitaplıklardan mı yoksa programıma işaret eden bir şeyi mi özlüyorum?

+2

Programınızı hata ayıklama bilgileriyle ('-g -O0') derleyin ve yeniden 'valgrind' komutunu çalıştırın. – Drop

+0

@Drop, Derleme ve Debug oluşturmak için ayarlanmış Qt Creator kullanıyorum, Debug build gelen -g ertelemek? – Amani

+0

Qt kendisini hata ayıklama bilgisi ile derlemeniz gerekir ... ('-debug' yapılandırmak için geçiş yap) – peppe

cevap

2

Varsayılan olarak Valgrind, çağrı yığınının yalnızca en iyi 12 girişini gösterir, ancak bu --num-callers=xx parametresiyle değiştirilebilir. Kendi program kodunuzdaki fonksiyonlar yığın üzerinde daha da aşağıya doğrudur.

+0

Ayrıca, bir hata ayıklama yapısının (yorumlar doğrultusunda) işlevler olmayacağı için çağrı yığını gereksinimlerini de artırma eğiliminde olduğunu unutmayın. inlined. –