Можно ли установить «глобальную» условную точку останова, которая оценивается везде, где условие является допустимым? - PullRequest
0 голосов
/ 29 мая 2020

Я работаю с кодовой базой C ++, которая не использует исключения, и по соглашению каждая функция возвращает false в случае сбоя, поэтому значительная часть кода выглядит так:

bool compute_something(int& result) {
    bool ok = step1();
    ok = ok && step2();
    ok = ok && step3();
    ...
    ok = ok && stepN(result);
    return ok;
}

Когда Отлаживая ошибку, я хотел бы добавить точку останова всякий раз, когда любая переменная с именем «ok» в программе становится ложной, чтобы определить точный момент возникновения ошибки.

Я обнаружил этот вопрос , который в чем-то похож, но не решает эту проблему (и это конкретный gdb c).

Можно ли этого достичь в Visual Studio? Или в любой другой среде, если на то пошло, ответ может помочь кому-то другому.

1 Ответ

1 голос
/ 29 мая 2020

К сожалению, я почти уверен, что вы не можете. Не может быть точек останова для переменных со случайными именами. Вы можете разместить точку останова на доступе к памяти на конкретный адрес c памяти, или вы можете использовать имя переменной, которое находится в области видимости в текущих сеансах (что просто помещает точку останова на адрес указанной переменной).

Причиной этого является тот факт, что точки останова доступа к памяти выполняются аппаратно, а аппаратное обеспечение вообще не имеет представления о каких-либо именах.

...