QT debugger Meldung

Verschiedenes zu Qt
Antworten
acdc
Beiträge: 82
Registriert: 23. Oktober 2007 18:56

QT debugger Meldung

Beitrag von acdc »

Hallo,

ich arbete mit dem QTCreator, und der QT Version 2010.04. Mein Projekt ist schon sehr Umfangreich. Das Problem tritt leider nicht jedes Mal auf. Ich lade also daten aus von einem MSSql Server in ein QSqlQueryModel und zeige es an.

Code: Alles auswählen

 
...
  QString queryString("select * from daten");
  model->setQuery(queryString,db);
  if (model->lastError().isValid())
     qDebug() << model->lastError();
...

Das funktioniert alles besten und ohne Probleme. Schließe ich nun das Programm, so stürzt es ab. Windows 7 sagt, dass das Programm nicht mehr funktioniert:

Problemsignatur:
Problemereignisname: APPCRASH
Anwendungsname: prog.exe
Anwendungsversion: 0.0.0.0
Anwendungszeitstempel: 4d74b75b
Fehlermodulname: StackHash_0a9e
Fehlermodulversion: 0.0.0.0
Fehlermodulzeitstempel: 00000000
Ausnahmecode: c0000005
Ausnahmeoffset: 79726f74
Betriebsystemversion: 6.1
Gebietsschema-ID: 3079
Zusatzinformation 1: 0a9e
Zusatzinformation 2: 0a9e372d3b4ad19135b953a78882e789
Zusatzinformation 3: 0a9e
Zusatzinformation 4: 0a9e372d3b4ad19135b953a78882e789


Der Fehler tritt also nur beim Beenden des Programms auf. Wie gesagt, das passiert nicht jedes Mal und somit kann ich den Fehler nicht eingrenzen.

Nutze ich hingegen eine sqlite Datenbank, so stürzt es nicht ab.

Im Debugger bekomme ich nun folgende Ausgabe:

Code: Alles auswählen

...
0x63b89359  <+32825>:            	mov    (%ebx),%ecx
0x63b8935b  <+32827>:            	test   %ecx,%ecx
0x63b8935d  <+32829>:            	je     0x63b89378 <qt_plugin_instance+32856>
0x63b8935f  <+32831>:            	mov    %esi,(%esp)
0x63b89362  <+32834>:            	mov    0x63ba7904,%edi
0x63b89368  <+32840>:            	call   *%edi
0x63b8936a  <+32842>:            	mov    0x8(%esi),%ebx
0x63b8936d  <+32845>:            	mov    0x8(%eax),%eax
0x63b89370  <+32848>:            	mov    0x14(%ebx),%edx

---> Fehler in dieser Zeile 0x63b89373  <+32851>:            	cmp    0xc(%eax),%edx

0x63b89376  <+32854>:            	je     0x63b893d0 <qt_plugin_instance+32944>
0x63b89378  <+32856>:            	test   %ebx,%ebx
0x63b8937a  <+32858>:            	je     0x63b893a1 <qt_plugin_instance+32897>
0x63b8937c  <+32860>:            	mov    0xc(%ebx),%eax
0x63b8937f  <+32863>:            	test   %eax,%eax
0x63b89381  <+32865>:            	je     0x63b8938d <qt_plugin_instance+32877>
0x63b89383  <+32867>:            	lock decl (%eax)
0x63b89386  <+32870>:            	setne  %dl
0x63b89389  <+32873>:            	test   %dl,%dl
...
und der Fehler tritt in dieser Datei auf: qsqlodbc4.dll

Ich hoffe die Debugmeldungen helfen hier auch weiter.
Debugausgaben in den Destructoren meiner Klassen habe mit hier auch nicht weitergeholfen.

Was kann ich hier machen bzw. liegt der Fehler tatsächlich in meinem Code?

Dank für die Antworten!

acdc
kater
Beiträge: 306
Registriert: 29. Dezember 2009 01:13
Wohnort: Darmstadt

Beitrag von kater »

Mit dem Assembler Code wird wohl kaum jemand was anfangen können. Normal gibt der Debuger auch den entsprechenden Code mit aus. Nutzt du unter Window vllt. nicht den mingw Compiler?
Ansonsten das Programm mit valgrind überprüfen und alle Fehler bereinigen. valgrind gibts zwar nur für Linux aber weil Qt egal.
Antworten