我想在我的C代码中找到NaN值的首次出现。我目前正在使用Visual Studio 2017调试器。
有没有简单的方法可以做到这一点? 我想象一个条件,该条件检查作用域中的所有变量,并且此时是否发生NaN中断。似乎没有这样的功能。有人接近吗?我也愿意接受其他调试解决方案(与Matlab C-Mex-Files一起运行)。
答案 0 :(得分:0)
从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函数。