在以下情况下,开始调试数字代码的一般策略是什么:
- 使用积极优化标志编译的代码,在输出中产生偶尔的 NaN 和 Inf
-g
用(这意味着)编译的代码-O0
与调试器一起运行,不再产生 NaN 和 Inf 了?
在这种情况下,我使用的是 Portland Group C++ 编译器 pgCC,并使用了优化选项
-w -fast -O3 -Mipa=fast -Mfprelaxed -Minline=levels:10
然后就
-w -g
对于调试版本。但我相信类似的情况也可能发生g++
。
编辑:添加打印语句不是一个非常诱人的选项,因为代码不是我写的,它有几千行大,我不知道缩小搜索范围;NaN 可能几乎来自任何地方。