Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

11

17.09.2009, 21:25

Zitat von »"Gotbread"«

ich meine beim msvc musst du noch etwas einstellen, damit er exceptions an das programm weiterleitet und nicht an seinen debugger.


Das hat mit Debugger nix zu tun, bis VC 2005 konnte man mit try und catch auch Windows Exceptions (das is was andres als C++ Exceptions) abgefangen und das ist seit VC 2005 nimmer so. Nachdem er aber eh nur C++ Exceptions verwendet betrifft ihn das nicht ;)

Zitat von »"drakon"«

(Kleiner Tipp lediglich die Farben und Fonts importieren/exportieren, da ansonsten alle Einstellungen für Fenster, Ausrichtung usw. des Typen übernommen werden, welche wahrscheinlich nicht den deinnigen entspricht. ;))


Klingt als spricht da wer aus Erfahrung :p

Gotbread

Alter Hase

Beiträge: 421

Beruf: Student (Etechnik) + Hiwi

  • Private Nachricht senden

12

17.09.2009, 21:45

hm ich kann so oft auf ok klicken wie ich lustig bin, er übernimmt es einfach
nicht :( (user types (...))

außerdem scheint er syntaxerror unterschlängeln zu können. diese farb-
option gab es jedenfalls. kann man das irgentwie einstellen, dass der
das auch macht?
Mfg Goti
www.gotbread.bplaced.net
viele tolle spiele kostenlos, viele hardware-basteleien :)

"Es ist nicht undicht, es läuft über" - Homer Simpson

goldfisch007

Alter Hase

Beiträge: 446

Wohnort: Süden von Berlin

  • Private Nachricht senden

13

17.09.2009, 21:56

thx @ drakon

ich probiers gleich aus
Wir bauen auf und reißen nieder, so ham wir Arbeit ima wieder...
--------------------
http://www.piratenpartei.de/tmp/images/Slogans_5_0.png
--------------------
Sei stets geduldig gegenüber Leuten, die nicht mit dir übereinstimmen. Sie haben ein Recht auf ihren Standpunkt - trotz ihrer lächerlichen Meinung. (F. Hollaender, geklaut von Helmut xD)

xardias

Community-Fossil

  • »xardias« ist der Autor dieses Themas

Beiträge: 2 731

Wohnort: Santa Clara, CA

Beruf: Software Engineer

  • Private Nachricht senden

14

17.09.2009, 22:46

Also ich habe mal versucht ein paar Fehlerquellen auszuschließen (Und es ist nur noch wirrer geworden...)

Ich werfe nun eine std::exception, um auszuschließen, dass es an meinen Exception Klassen liegt. Ich habe einen kompletten Rebuild gemacht. Ich habe von externen Bibliotheken die ich nutze nur eine einzige Version, die Bibliotheken die ich intern Nutze wurden im Rebuild mit neu erstellt.

So schaut es aus. Hier wird die Exception geworfen. Sieht alles noch sauber aus:


(Link)


Nach einem Step Over sollte ich normalerweise im catch Block landen. Lande jedoch hier:


(Link)


Mir gibt besonders das 0xcccccccc im Call Stack sehr zu denken. Das passt mir ja so garnicht... Aber da ich absolut nirgendwo in den Code eingreife nach dem throw weiß ich nicht woran es liegt.

[Edit]
Oha. Ich habe den Fehler gefunden. Im Rahmen des throw werden die Destruktoren der lokalen Variablen im Call Stack aufgerufen.. und einer davon hat ne exception geworfen. War leider nicht erkennbar, da es Haargenau die selbe exception ist wie die die ich bewusst geworfen habe.

Danke nochmal!
Dennis

Gotbread

Alter Hase

Beiträge: 421

Beruf: Student (Etechnik) + Hiwi

  • Private Nachricht senden

15

17.09.2009, 22:51

im falle einer exception kann ja fast alles passieren. es gibt sogar
funktionen um den stack noch zu retten. vllt hast du auch ein buffer-
overrun (an der stelle, hm, aber möglich isses).

ot:

wieso übernimmt msvc meine farbeinstellungen nicht?
Mfg Goti
www.gotbread.bplaced.net
viele tolle spiele kostenlos, viele hardware-basteleien :)

"Es ist nicht undicht, es läuft über" - Homer Simpson

16

17.09.2009, 23:37

Zitat von »"xardias"«

Oha. Ich habe den Fehler gefunden. Im Rahmen des throw werden die Destruktoren der lokalen Variablen im Call Stack aufgerufen.. und einer davon hat ne exception geworfen. War leider nicht erkennbar, da es Haargenau die selbe exception ist wie die die ich bewusst geworfen habe.
Destruktoren, die Exceptions nach aussen treten lassen, sind ultimativ böse! Wenn das dein Code ist, änder den so schnell wie möglich ab und wirf nie wieder Exceptions in Destruktoren oder Deallokationsfunktionen wie operator delete. :)

Für ein sicheres Programmverhalten müssen Destruktoren die Nothrow-Garantie einhalten. Es gibt Fälle, wo das nicht ganz einfach ist, z.B. wenn Ressourcen nicht freigegeben werden können. Trotzdem sollte man sich hier so stark wie möglich um Exceptionsicherheit bemühen.

xardias

Community-Fossil

  • »xardias« ist der Autor dieses Themas

Beiträge: 2 731

Wohnort: Santa Clara, CA

Beruf: Software Engineer

  • Private Nachricht senden

17

18.09.2009, 08:32

Zitat von »"Nexus"«

Zitat von »"xardias"«

Oha. Ich habe den Fehler gefunden. Im Rahmen des throw werden die Destruktoren der lokalen Variablen im Call Stack aufgerufen.. und einer davon hat ne exception geworfen. War leider nicht erkennbar, da es Haargenau die selbe exception ist wie die die ich bewusst geworfen habe.
Destruktoren, die Exceptions nach aussen treten lassen, sind ultimativ böse! Wenn das dein Code ist, änder den so schnell wie möglich ab und wirf nie wieder Exceptions in Destruktoren oder Deallokationsfunktionen wie operator delete. :)

Für ein sicheres Programmverhalten müssen Destruktoren die Nothrow-Garantie einhalten. Es gibt Fälle, wo das nicht ganz einfach ist, z.B. wenn Ressourcen nicht freigegeben werden können. Trotzdem sollte man sich hier so stark wie möglich um Exceptionsicherheit bemühen.

Jo das weiß ich eigentlich auch. Ich war nur etwas zu großzügig beim Umwandeln von CUDA und OpenGL Errors in Exceptions. Ist schon gefixt.

Werbeanzeige