Seite 1 von 1

How to : Fragen zu Debug mit Qt

Verfasst: 12. Oktober 2007 19:43
von oetzi
Hallo Leute,
Bin Newbie in der Qt-Opensource-Programmierung und suche eine Möglichkeit mein erstes Qt-Programm im Debug-Modus zu kompilieren.

Nach diversen Schwierigkeiten stellen sich für mich folgende Fragen

Frage 1: Kann ich uberhaupt mit der Qt 4.3.2 – Opensource-Variante Programme im Debug-Modus übersetzen oder ist das nur in der kommerziellen Variante möglich ?

Frage 2: Muß ich dazu erst einmal ein „Build debug libraries“ durchführen, d.h. muß ich den kompletten source von Qt erst einmal im Debug-Modus übersetzen ?

Ich habe folgende Systeme in der Reihenfolge unter XP installiert:
(MinGWJ MinGW-5.1.3.exe,( Debugger : ) gdb-5.2.1-1.exe
(Qt Opensource) Qt-win-opensource-4.3.2-mingw.exe
Umgebungsvariablen QTDIR und QMAKESPEC sind richtig gesetzt

Verfasst: 12. Oktober 2007 20:30
von dontinelli
Hallo oetzi

Du kannst auch in der OS-Version debugen.
Um im Debug-Modus zu kompilieren brauchst du natürlich die Debug-Libraries, sonst läuft da gar nichts. Da ich Linux habe weis ich nicht, ob das bei der Selbstinstaller-exe schon dabei ist...

CHeers
Dontinelli

Verfasst: 13. Oktober 2007 11:47
von oetzi
Hallo dontinelli,
Vielen Dank für die Antwort, weiß aber trotzdem nicht, ob ich deutlich genug war:

Ich bin mir immer noch unsicher, ob ich in jedem (!) Debug-Fall den kompletten Build von der Qt-source durchführen muß, z.B. um folgendes Testprogramm im Debug-Modus zu übersetzen :

#include <QApplication>
#include <QPushButton>

int main(int argc, char *argv[])
{
QApplication app(argc, argv);

QPushButton hello("Hello world!");
hello.resize(100, 30);

hello.show();
return app.exec();
}


Dabei möchte ich gar nicht erst den Qt-Source selbst debuggen, sondern nur mein kleines Testprogramm (s.o.). Bei der langen Recherche im Internet gab es dazu widersprüchliche Informationen,
bitte helft mir !


Freue mich auf rege Beteiligung
oetzi

Verfasst: 15. Oktober 2007 16:51
von 3DH
Hi,

ein paar Infos zum Debuggen:

Die Qt-Libs müssen zwar nicht zwingend als Debug-Version vorliegen, erleichtern aber die Fehlersuche, da du sonst nur lauter unbekannte Speicheradressen statt der echten Funktions/Klassennamen präsentiert bekommst.

Wenn du deine App debuggen willst brauchst du im Normalfall:

a) eine Qt-lib als Debug-Version (QtCore4d.dll & Co.) - d.h. Qt muss komplett neu übersetzt werden (dies braucht nur _einmal_ gemacht werden)

b) einen Debugger (z.B. den GDB bei MinGW oder den integrierten von VisualStudio)

c) die .pro Datei deiner App muss "CONFIG += debug" enthalten (oder unter VS einfach "Debug" als Build auswählen)

Jetzt sind die Voraussetzungen erfüllt, um sinnvolle und verständliche Meldungen vom Debugger zu bekommen.

Zum Debuggen auf der Kommandozeile jetzt:

gdb <myapp.exe> eingeben und Eingabetaste
jetzt in der GDB Kommandozeile "run" eingeben und dann gehts los...

Sollte dein Programm noch Kommandozeilenparameter erwarten, werden die einfach hinter den "run" Befehl geschrieben.

Zur Bedienung vom GDB gibt es zahlreiche HowTos und Tutorials im Netz - sind i.d.R. zwar für Linux geschrieben, funzen aber so 1:1 auch mit dem MinGW.

Hope that helps ;)

ciao,
3DH

Verfasst: 12. April 2008 23:09
von shadowmasta
Hallo liebe Qt Mitglieder

leider habe ich auch bzw. noch das Problem mit dem debuggen.
Ich habe mir aus einem Buch "C++ GUI Programming with Qt 4" eine große Anwendung geschrieben (Spreadsheet), leider gibt es eine Exception, daher möchte ich den Debugger einsetzen um die Problemstelle zu finden.
Leider ist das einfacher gesagt als getan denn ich bekomme folgende Meldung:

Code: Alles auswählen

Building to ensure sources are up-to-date
Build succeeded
Selecting target: Debug
Adding source dir: F:\Projects\C++\Qt\Spreadsheet\
Adding source dir: F:\Projects\C++\Qt\Spreadsheet\
Adding file: bin\Debug\Spreadsheet.exe
Starting debugger: done
Registered new type: wxString
Registered new type: STL String
Registered new type: STL Vector
Setting breakpoints
Debugger name and version: GNU gdb 6.3
No symbol table is loaded.  Use the "file" command.
Ich habe CodeBlocks und MinGW von Qt Open Source mitinstallieren lassen. Das Häkchen "This is a custom Makefile" ist aktiviert.
Die Frage ist was 3DH mit a) meint bzw. wie ich das hinbekomme. Wäre super nett wenn mir das wer erklären könnte.

Danke :wink: