我正在使用Code :: Blocks编译gfortran的一些数字代码。我有两个版本的可执行文件:Debug和Release。
-Jobj\Debug\ -Wall -g -c
-Jobj\Release\ -Wall -O2 -c
-nx -fullname -quiet -args
当我正常运行代码时,Release和Debug可执行文件都会产生相同的输出。但是,当我在gdb
中运行代码时,输出是不同的。这似乎是由于数值计算在执行过程中产生了不同的结果。
例如,在gdb中运行时的一次计算结果为7.93941842553643E-06,正常运行时为1.71006041855278E-03。更奇怪的是,一些非零结果在双精度精度内是相同的。
使用gdb
运行时,如何确保输出相同?使用gdb时默认使用不同类型的数值计算或评估吗?