用于捕获浮点异常的编译器功能
要开启 Open XL Fortran 异常捕获,请使用 -qflttrap 选项和包含 enable的子选项的某些组合来编译程序。
此选项使用陷阱操作来检测浮点异常,并在发生异常时生成 SIGFPE 信号,前提是安装了 SIGFPE 的信号处理程序。
-qflttrap 还具有对应于异常条件的名称的子选项。 例如,如果您只关心处理溢出和下溢异常,那么可以指定 类似于以下的命令:
xlf95 -qflttrap=overflow:underflow:enable compute_pi.f仅当编译主程序时需要 enable 。 但是,如果对其他文件指定此属性,那么此属性非常重要,并且不会导致任何问题,因此在使用 -qflttrap时,请始终包含此属性。这种方法的一个优点是性能影响相对较低。 但是,此方法仅会捕获使用 -qflttrap编译的代码中发生的异常,其中不包含系统库例程。
备注信息:
- 如果程序依赖于针对特定操作发生的浮点异常,请同时指定包含 nofold的 -qfloat 子选项。 否则,编译器可能会将产生异常的计算替换为常量 NaN 或无穷大值,或者它可能会消除单精度操作中的溢出。
- -qflttrap 选项的子选项会将要求您修改代码的先前方法替换为对 fpsets 和 fpgets 过程的调用。 如果使用相应的 -qflttrap 设置,那么不再需要这些调用来进行异常处理。