В 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.