2016-04-09 9 views
2

Ich bin neu in Valgrind. Ich habe ein Programm in C++ mit Qt 5.5.1 Bibliotheken auf Ubuntu 15.10 geschrieben. Ich verwende Qt Creator mit Debug-Build-Set. Ich auf Dichtigkeit geprüft Speicher Valgrind mit dem folgenden Befehl:Ist dieser Fehler von Qt oder meinem Programm?

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

Valgrind gibt mir dann die folgende Meldung:

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

Aus der obigen Meldung nichts zeigt auf die Stelle von MyProgram überhaupt. Ist das von Qt und anderen Bibliotheken oder vermisse ich etwas, das auf myProgram zeigt?

+2

Versuchen Sie, Ihr Programm mit Debug-Informationen zu kompilieren ('-g -O0') und führen Sie' valgrind' erneut aus. – Drop

+0

@Drop, ich benutze Qt Creator zu kompilieren und auf Debug Build gesetzt haben, macht -g Debug Debuggen Build? – Amani

+0

Sie müssten Qt selbst mit Debug-Informationen kompilieren ... ('-debug' zu konfigurieren) – peppe

Antwort

2

Standardmäßig zeigt Valgrind nur die obersten 12 Einträge des Aufruf-Stacks an, dies kann jedoch mit dem Parameter --num-callers=xx geändert werden. Die Funktionen aus Ihrem eigenen Programmcode sind wahrscheinlich weiter unten auf dem Stapel.

+0

Beachten Sie auch, dass ein Debug-Build (laut Kommentaren) auch dazu neigt, die Call-Stack-Anforderungen zu erhöhen, wie Funktionen nicht sein werden Inline. –