2016-04-09 4 views
2

Я новичок в valgrind. Я написал программу на C++, используя библиотеки Qt 5.5.1 на Ubuntu 15.10. Я использую Qt Creator с набором отладки Debug. Я проверил на наличие утечек памяти с помощью 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 записей стека вызовов, но это можно изменить с помощью параметра --num-callers=xx. Функции из вашего собственного программного кода, вероятно, будут дальше в стеке.

+0

Обратите также внимание, что сборка отладки (согласно комментариям) также будет увеличивать требования к стеку вызовов, поскольку функции не будут встраиваемый. –