我正在使用GDB进行调试并进入GNU科学库(GSL)中的某些功能。当我使用'step'命令时,它似乎随机向前和向后跳跃,但不是按照编码的正确顺序。此外,当我试图观察一些变量时,它表示该值已经“优化”。
我确信在编译代码时我没有使用任何-O标志。这是一个简单的例子:
#include <stdio.h>
#include <gsl/gsl_linalg.h>
int main()
{
double A[]={1.0, 0.0,
0.0, 1.0};
gsl_matrix_view vA = gsl_matrix_view_array(A, 2, 2);
gsl_linalg_cholesky_decomp(&vA.matrix); // Break and Step into this function.
return 0;
}
如果你打破并进入gsl_linalg_cholesky_decomp
并继续踩踏,你会看到'随意游荡'。
我想知道原因。提前谢谢。
P.S。:我认为可能的原因是GSL库中的优化。如何在没有任何优化的情况下编译它?