В MFC есть два макроса, которыми можно пользоваться, кстати, и без MFC. Эти макросы проверяют условия выражения и останавливают программу. Для их использования нужен только afx.h. Эти два макроса практически одно и тоже.
#define VERIFY(f) ASSERT(f)
А сам ASSERT использует AfxDebugBreak():
#define ASSERT(f) \ do \ { \ if (!(f) && AfxAssertFailedLine(THIS_FILE, __LINE__)) \ AfxDebugBreak(); \ } while (0) \
Пользоваться ими предпочтительнее, так как не нужно заботиться о разности версий. Все уже описано в заголовочных файлах и не будет включено в конечную версию. Можно сказать, что это 4 и последний уровень. Давайте попробуем воспользоваться.
void test() { int y; y=234; for (int x=0;x<10000;x++) { strs ss; ss.i = 10; ss.j = 5; y=y+y; ASSERT(x!=10); } }
Пока x не станет равной 10 ничего не будет происходить. А вот когда 10, то произойдет прерывания программы, но информационное окно будет уже другое.
Оно нам предлагает уже три варианта, прервать программу, повторить и пропустить. Если нажать повтор (Retry), то мы попадем как раз в отладку.
Все нормально, мы остановились на 10.