Exceptions

Alles zu Entwicklungsumgebungen und Editoren für Qt
Antworten
Troll.Soft
Beiträge: 190
Registriert: 18. Juni 2008 09:52
Wohnort: Hamburg

Exceptions

Beitrag von Troll.Soft »

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
MasterK
Beiträge: 24
Registriert: 10. November 2009 23:10

Beitrag von MasterK »

Schau mal nach, ob RTTI aktiv ist unter linux/gcc.
Troll.Soft
Beiträge: 190
Registriert: 18. Juni 2008 09:52
Wohnort: Hamburg

Beitrag von Troll.Soft »

im pro-file habe ich dieses angegeben:

Code: Alles auswählen

CONFIG	+= qt
CONFIG	+= warn_on
CONFIG	+= dll
CONFIG	+= exceptions
CONFIG	+= rtti
CONFIG	+= debug 
und dieser Code läuft sowohl mit VC als auch mit gcc korrekt

Code: Alles auswählen

qWarning() << "type = '" <<	(typeid(List)).name();
logischerweise muß rtti funktionieren.

tschüß
Troll.Soft
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: Exceptions

Beitrag von franzf »

Troll.Soft hat geschrieben:Unter MinGW und Linux laufen die Exceptions nicht.
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.
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

Beitrag von Troll.Soft »

wird gemacht, ist aber momentan etwas spät
Troll.Soft
Beiträge: 190
Registriert: 18. Juni 2008 09:52
Wohnort: Hamburg

Beitrag von Troll.Soft »

hier ist das pro-file

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_test
hier ist der sourcecode

Code: 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;
}
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
Antworten