我想在我的C代码中找到NaN值的第一次出现。我当前正在使用Visual Studio 2017调试器。

是否有捷径可寻?
我想象一个条件,该条件检查作用域中的所有变量,并且此时是否发生NaN中断。似乎没有这样的功能。有人接近吗?我也欢迎其他调试解决方案(与Matlab C-Mex-Files一起运行)。

最佳答案

the link posted above读取,似乎在Visual Studio中每个解决方案最多可以有4个数据断点,而我认为它们的设置和维护非常麻烦。

根据您拥有多少“活动”变量,一种替代方法是为NaN插入手动检查。编写一个可变参数函数,例如:

bool isnan_any(int count, ...) {
    va_list argp;
    va_start(argp, count);
    while (count--) {
        double d = va_arg(argp, double);
        if (isnan(d)) {
            va_end(argp);
            return true;
        }
    }
    va_end(argp);
    return false;
}


并传递您当前要检查的任何变量,或收集指向数组中所有double的指针,并将其传递给您的isnan -check函数。

10-07 18:31