Hallo,
bin fleißiger Benutzer von Exceptions und mit Qt plus VC ist alles ok.
Unter MinGW und Linux laufen die Exceptions nicht.
Die Doku zu configure sagt aber, das Exceptions immer standardmäßig eingeschaltet sind.
Wo liegt der Fehler?
tschüß
Troll.Soft
Exceptions
-
Troll.Soft
- Beiträge: 190
- Registriert: 18. Juni 2008 09:52
- Wohnort: Hamburg
im pro-file habe ich dieses angegeben:und dieser Code läuft sowohl mit VC als auch mit gcc korrektlogischerweise muß rtti funktionieren.
tschüß
Troll.Soft
Code: Alles auswählen
CONFIG += qt
CONFIG += warn_on
CONFIG += dll
CONFIG += exceptions
CONFIG += rtti
CONFIG += debug Code: Alles auswählen
qWarning() << "type = '" << (typeid(List)).name();tschüß
Troll.Soft
Re: Exceptions
Kannst du mal ein Beispiel posten incl. Beschreibung von erwartetem und und tatsächlem Verhalten? Weil unter "Exceptions laufen nicht kann ich mir nicht viel vorstellen.Troll.Soft hat geschrieben:Unter MinGW und Linux laufen die Exceptions nicht.
Hast du Qt selber übersetzt, oder aus einem Repository unter Linux bzw. Binary unter Windows installiert?
-
Troll.Soft
- Beiträge: 190
- Registriert: 18. Juni 2008 09:52
- Wohnort: Hamburg
-
Troll.Soft
- Beiträge: 190
- Registriert: 18. Juni 2008 09:52
- Wohnort: Hamburg
hier ist das pro-filehier ist der sourcecode
Wie man leicht sieht, ist das Pro-File für VC2008 und den MinGW ausgelegt. QT-Version ist jeweils 4.6. Sowohl VC als auch MinGW sind selbst compiliert mit der debug = on und beide Versionen lassen sich auch debuggen. In beiden Versionen wird offenbar eine Exception ausgeworfen, aber nur die VC Version fängt sie ordnungsgemäß ein und gibt das qWarning() raus.
Die MinGW Version:
von der Kommandozeile aus gestartet führt zu eine Windowsmeldung "unknown software exception"
aus dem über Qt-Creator gestartetem gcc Debugger kommt eine Meldung "Der Prozess wurde nach dem Erhalt eines Signals vom Betriebssystem angehalten. SIGFPE Arithmetic exception"
Ich hoffe, Du kannst damit etwas anfangen.
tschüß
Troll.Soft
Code: Alles auswählen
QT += core
CONFIG += qt
CONFIG += warn_on
CONFIG += exceptions
CONFIG += debug
win32-msvc2008 {
##############
TEMPLATE = vcapp
DESTDIR = debug.WINDOWS
OBJECTS_DIR = debug.WINDOWS
DEFINES += WINDOWS
}
win32-g++ {
#########
TEMPLATE = app
DESTDIR = debug
OBJECTS_DIR = debug
DEFINES += MINGW
}
SOURCES = main_test.cpp
TARGET = main_testCode: Alles auswählen
#include <QtCore>
int main()
{
qWarning() << "hallo world";
try {
int Null = 0;
int A = 123;
int B = A / Null; // hier soll die exception geworfen werden
qWarning() << B;
}
catch ( ... ) {
qWarning() << "exception error";
}
return 0;
}Die MinGW Version:
von der Kommandozeile aus gestartet führt zu eine Windowsmeldung "unknown software exception"
aus dem über Qt-Creator gestartetem gcc Debugger kommt eine Meldung "Der Prozess wurde nach dem Erhalt eines Signals vom Betriebssystem angehalten. SIGFPE Arithmetic exception"
Ich hoffe, Du kannst damit etwas anfangen.
tschüß
Troll.Soft