gpt4 book ai didi

c++ - 在不更改代码的情况下生成 NaN float 时停止调试器

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:36:37 25 4
gpt4 key购买 nike

我读了thisthis .精髓是,如果通过包含 fenv.h 并通过 feenableexcept(FE_ALL_EXCEPT & ~FE_INEXACT); 启用所有浮点异常但 FE_INEXACT 生成 nan,则可以抛出 SIGFPE;

因此,代码改变了形式

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

 #include <fenv.h>
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,我不知道在哪里。不能将上述更改应用于大量文件和跟踪错误。

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

我们使用的是intel icc version 15.0.3编译器。

最佳答案

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

它将为您的整个程序启用异常,直到您通过调用另一个函数(例如 fedisableexcept())来禁用异常。

关于c++ - 在不更改代码的情况下生成 NaN float 时停止调试器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46170464/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com