Sto eseguendo il debug di un programma numerico più grande a cui ho aggiunto. È scritto in fortran90, compilato con gfortran (l'ultima versione disponibile per Mac) e sto eseguendo il debug usando gdb (di nuovo l'ultima versione disponibile per Mac).Debugging con gdb e gfortran - FPE
Le mie aggiunte hanno un bug da qualche parte e sto cercando di individuarlo, il che è chiaro come l'esecuzione del programma non produce il risultato atteso. Quando corro in gdb, ottengo il seguente output alla fine:
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]
Vorrei identificare esattamente dove si verifica questo FPE, ma sembra che un'eccezione virgola mobile non provoca la programma in crash. Ho provato questo dividendo esplicitamente per 0 nel mio codice - non ha causato il blocco del programma, ma ha portato a comportamenti imprevisti.
Qual è il flag corretto per gdb o gfortran per garantire che il programma smetta di funzionare (idealmente con un backtrace) quando raggiunge un'eccezione a virgola mobile? Ho provato a seguire le istruzioni here ma non sembra cambiare nulla.
Non ci sono flag di compilazione di cui https://stackoverflow.com/questions/10210759/gfortran-warn-on-floating -point-eccezione che può aiutare. Tuttavia, potresti per favore menzionare i numeri di versione nella domanda? "L'ultima" sarà di minore utilità per i lettori in futuro. – francescalus