Eklediğim daha büyük bir sayısal programda hata ayıklama yapıyorum. Fortran90'da gfortran (Mac için en yeni sürüm) ile derlenmiş ve gdb (Mac için mevcut en yeni sürüm) kullanarak hata ayıklama yapıyorum.gdb ve gfortran ile hata ayıklama - FPE'nin
Eklerimin bir yerinde bir hata var ve onu bulmaya çalışıyorum, bu da programın çalıştırılmasının beklenen sonucu üretmediğinden emin.
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]
Ben bu FPE oluşur tam nerede tanımlamak istiyorum, ama bir kayan nokta özel neden olmaz gibi görünüyor: Ben gdb çalıştırdığınızda, ben sonuna aşağıdaki çıktıyı almak program çökmesine. Bunu kodumda 0'a göre açıkça bölerek test ettim - programın çalışmayı durdurmasına neden olmadı, ancak beklenmedik davranışlara yol açtı.
Gdb veya gfortran için programın, kayan nokta istisnasına ulaştığında (ideal olarak backtrace ile) çalışmayı durdurmasını sağlamak için uygun bayrağı nedir? here numaralı yönergeleri izlemeyi denedim, ancak hiçbir şey değişmiyordu. gfortran manuel derleyici bayrakları için
gfortran -g -fbacktrace -ffpe-trap=zero,overflow,underflow youcode.f90 -o run.exe
Açıklama:
vardır derleyici bayrakları https://stackoverflow.com/questions/10210759/gfortran-warn-on-floating belirtilen yardımcı olabilecek bir nokta-istisna. Bununla birlikte, sorudaki sürüm numaralarından bahseder misiniz? "Son", gelecekte okuyucular için daha az kullanılacaktır. – francescalus