Ich bin Debuggen eines größeren numerischen Programms, das ich hinzugefügt habe. Es ist in fortran90 geschrieben, kompiliert mit gfortran (die neueste Version für Mac) und ich debugge es mit gdb (wieder die neueste Version für Mac).Debugging mit Gdb und Gfortran - FPE's
haben meine Ergänzungen einen Fehler irgendwo und ich versuche, es zu finden, die sich das Programm als Lauf klar ist das erwartete Ergebnis nicht produzieren. Wenn ich es in gdb laufen lasse, erhalte ich die folgende Ausgabe am Ende:
Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG IEEE_DIVIDE_BY_ZERO IEEE_UNDERFLOW_FLAG IEEE_DENORMAL [Inferior 1 (process 83843) exited normally]
Ich würde zu identifizieren, wie genau wo diese FPE auftritt, aber es scheint, dass eine Gleitkomma-Ausnahme verursacht nicht die Programm zum Absturz bringen. Ich habe dies getestet, indem ich in meinem Code explizit durch 0 geteilt habe - es hat nicht dazu geführt, dass das Programm nicht mehr lief, sondern zu unerwartetem Verhalten führte.
Was ist die richtige Flagge für entweder GDB oder gfortran, um sicherzustellen, dass das Programm nicht mehr läuft (im Idealfall mit einem Backtrace), wenn es eine Gleitkomma-Ausnahme erreicht? Ich habe versucht, den Anweisungen here zu folgen, aber es schien nichts zu ändern.
Es gibt Compiler in https://stackoverflow.com/questions/10210759/gfortran-warn-on-floating genannten Flags -Punkt-Ausnahme, die helfen kann. Könnten Sie bitte die Versionsnummern in der Frage angeben? "Latest" wird den Lesern in Zukunft weniger nutzen. – francescalus