我想在我的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函数。