Meine Anwendung ist in Delphi5 geschrieben. Ich verwende madExcept, um Bugs aufzuspüren. Ich habe eine "Floating point dvision by zero" Ausnahme aufgespürt, wo sie nicht sein sollte. Das Codesegment, in dem sie ausgelöst wird, geht wie folgt:
val:=100*Power(1.25,c);
wobei "c" eigentlich immer den Wert "1" hat.
Der Stacktrace des Protokolls:
main thread ($338f8):
00403504 +010 MyApp.exe System 1970 +5 @FRAC
00479148 +058 MyApp.exe Math Power
007ae8a6 +262 MyApp.exe MyClass 1962 +36 TMyClass.FormMouseWheel
Ich hatte eine weitere Ausnahme an einem Punkt, wo eine Division stattfand, aber der Divisor war eine Variable, die auch den Wert "1" hatte, als die Ausnahme auftrat. Das konnte ich debuggen und reproduzieren.
Meine Frage: Was übersehe ich? Gibt es bei der Fließkommadivision ein paar falsche Positivmeldungen, die mir nicht bekannt sind?
Außerdem: Ich verwende keine C++-DLLs an den Ausnahmepunkten, da sie dazu neigen, FP-Divisionen anders zu behandeln (indem sie NaN oder +/-INF zurückgeben, anstatt eine Ausnahme auszulösen).
Jeder Hinweis ist willkommen.