Проверка значений переменных во время выполнения программы.

Чтобы узнать значение переменной, следует задержать над ней указатель мыши. Рядом с именем переменной на экране появится подсказка со значением, которое совсем не соответствует ожидаемому.

Помимо экранной подсказки, переменная Sum со своим значением отображена в окне Auto, расположенном в левом нижнем углу (рис. 11).

 

Рис. 11 Просмотр значений переменных

 

В этом окне приведены значения последних переменных, с которыми работал Visual C++.

Просмотр программы показал, что сумма не была обнулена перед началом цикла. Для внесения исправлений вначале необходимо завершить сеанс отладки, выполнив команду Debug -> Stop Debugging, затем отредактировать метод и присвоить переменной Sum начальное значение 0:

 

void CBuggyView::OnFileCalculate()

{

CBuggyDoc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

 

float Sum = 0;

float Average;

 

 

for (int i = 1; i < 5; i++)

{

Sum += pDoc->data[i];

}

 

Average = Sum / 5;

 

OutputString.Format("Average = %.3f", Average);

Invalidate();

}

 

Ошибка с инициализацией исправлена. После запуска программы получим значение 2.800. Результат ошибочный. Снова начнем отладку командой Build ->Start Debug ->Go до точки прерывания. Войдем в цикл, нажав клавишу F10. Проверим значение переменной Sum. Оно равно 0. Теперь проверим значение, которое к ней прибавляется. Должно прибавляться значение 1, а на самом деле прибавляется 2. Т.е. второй ошибкой данной программы является организация цикла с 1, а не с 0. Исправим эту ошибку и запустим программу. Теперь среднее арифметическое значение чисел от 1 до 5 равно 3.

Чтобы удалить из программы точку прерывания, следует установить курсор на строку с ней и нажать клавишу F9.

 

3.2.15. Закончив отладку, следует удалить отладочную информацию из исполняемого файла. Для этого следует выполнить команду Build -> Set Active Configuration и выбрать из раскрывающегося списка строку buggy – Win32 Release, так как по умолчанию в программы на Visual C++ включается большой объем информации, используемой отладчиком.