调试C++代码:捕获第一个 NaN 外观

Debug C++ code: Catch first NaN appearance

本文关键字:第一个 NaN 外观 C++ 代码 调试      更新时间:2023-10-16

有没有一种简单的方法可以在调试器中检查 NaN 值首次出现的C++代码?

答案在这里给出:https://stackoverflow.com/a/5394095/1326595

只需包括

#include <fenv.h>

然后将以下行添加到代码中:

feenableexcept(FE_INVALID | FE_OVERFLOW);

调试器能够捕获信号并显示 NaN 的第一次出现。

根据IEEE标准,以下条件对NaN false

val == val

您可以使用它来触发断言或软件断点,但要注意编译器优化。可能,在调试构建中,它不会得到优化

你可以放一个assert(val >= 0 || val <= 0)来捕捉一个 NaN