[英]gfortran warn on floating point exception
我正在使用gfortran編寫一些代碼。 一段時間以來,我一直在與
-ffpe-trap=zero,overflow,invalid
試圖找出一些錯誤。 這導致我的程序立即停止執行。 在某些情況下,FPE可能會正常運行,因此會出現如下標記:
-ffpe-warn=zero,overflow,invalid
會非常有用。 gfortran(或任何其他編譯器)是否提供類似的功能? 如果沒有,是否有任何解決方法? 我目前的想法是創建一個C函數來注冊信號處理程序以寫出警告,盡管我不知道該怎么做。
我不知道遇到浮點異常的警告方式。 但是gfortran和ifort都有信號處理例程。 例如,請參見信號的gfortran文檔以及《 Intel Fortran編譯器用戶和參考指南》(警告:大PDF) (請參閱病房第410頁)。
您可以通過調用
signal
建立以下signal
:
- 忽略指定的信號(由數字標識)。
- 對指定信號使用默認操作,這可以重置先前建立的操作。
- 將控制權從指定的信號轉移到接收信號的過程,該過程由名稱指定。
對於您的情況,您可能想編寫一個函數來在發生浮點異常(例如,打印文件名/行號)時執行某些操作,並使用上面列表中的第三個選項。
不幸的是,這不是很容易移植:請看此頁面 ,了解各種編譯器的信號處理示例。 如果需要,可以將一些代碼包裝在預處理器宏中
-NDEBUG
) 更新:最終,如High Performance Mark所建議的那樣, ieee_exceptions
內部模塊的異常處理工具將是可移植的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.