Найти корень встречаемости NaN в отладчике Visual Studio 2017 - PullRequest
0 голосов
/ 18 июня 2019

Я хочу найти первое вхождение значения NaN в мой C-код.В настоящее время я использую отладчик Visual Studio 2017.

Есть ли простой способ сделать это?Я представляю себе условие, которое проверяет все переменные в области видимости, и в случае возникновения NaN разрывается в этой точке.Кажется, нет такой функции.У кого-нибудь есть что-то близкое к этому?Я также открыт для других решений отладки (которые работают с Matlab C-Mex-Files).

1 Ответ

0 голосов
/ 19 июня 2019

При чтении с ссылки, размещенной выше , в 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 s в массиве и передайте это в вашу функцию isnan -check.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...