c/c++语言开发共享在没有代码更改的情况下生成NaN浮点数时停止调试器

我读了这个和这个 。 如果通过包含fenv.h生成nan并且通过feenableexcept(FE_ALL_EXCEPT & ~FE_INEXACT);启用所有浮点exceptionfeenableexcept(FE_ALL_EXCEPT & ~FE_INEXACT);则可以抛出SIGFPE feenableexcept(FE_ALL_EXCEPT & ~FE_INEXACT);

因此,代码改变forms

 int main () { double dirty = 0.0; double nanvalue = 0.0/dirty; return 0; } 

  #include  int main () { feenableexcept(FE_ALL_EXCEPT & ~FE_INEXACT); // Enable all floating point exceptions but FE_INEXACT double dirty = 0.0; double nanvalue = 0.0/dirty; return 0; } 

这工作正常,但您必须更改代码。 我有问题,在一个庞大的c和c ++代码库中,某个地方生成了一个nan,我不知道在哪里。 将上述更改应用于文件的hunderts并跟踪错误不是一种选择。

有没有办法在没有代码更改的情况下启用所有浮点exception? 有没有我不知道的编译选项?

我们使用intel icc 15.0.3版编译器。

    无论您的代码跨越多少文件,您只需要在main()函数的第一行添加feenableexcept(FE_ALL_EXCEPT & ~FE_INEXACT)

    它将启用整个程序的exception,直到通过调用另一个函数(如fedisableexcept()禁用exception。

      以上就是c/c++开发分享在没有代码更改的情况下生成NaN浮点数时停止调试器相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注(计算机技术网)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请点击右边联系管理员删除。

      如若转载,请注明出处:https://www.ctvol.com/c-cdevelopment/545678.html

      (0)
      上一篇 2021年1月10日
      下一篇 2021年1月10日

      精彩推荐