Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Пошаговая отладка






Выявить допущенную ошибку можно во встроенном отладчике C++Builder. С точками прерывания мы уже знакомы. С их помощью мы проверяли работу валютного калькулятора. Теперь попробуем проанализировать, как реально выполняется игровая программа.

Перезапустите программу, повторите все вышеописанные действия до момента, когда в копилке будет 6 очков, а на кубике выпадет пятерка. Теперь перейдите в редактор C++Builder и найдите там метод NextltemClickQ, который вызывается при щелчке на кнопке Передать очередь хода. Поставьте с помощью клавиши F5 точку остановки на первый оператор и вернитесь к запущенному приложению. Теперь при попытке передать ход компьютеру работа программы прервется, и зеленая стрелка укажет, какой оператор должен выполняться на следующем шагу (см. рис. 39). Можно посмотреть значения переменных Referee.Human. Scores и Referee. Human. CurrentScores, наведя на них указатель мыши — получится, соответственно, 6 и 5.

Далее выполнение программы можно продолжить в пошаговом режиме — останавливаясь после выполнения очередного оператора, точнее, всех операторов, расположенных в очередной строке, имеющей пометку круглым маркером.

Пошаговое выполнение очень удобно тем, что позволяет взглянуть на работу приложения изнутри, в динамике, непрерывно контролируя изменения любых переменных. Выполнить очередную строку, помеченную стрелкой, можно, нажав клавишу F8. Следующая строка, которая будет выполнена, выделится в редакторе синим цветом.

Если теперь проверить содержимое переменной Referee.Human.Scores, то выяснится, что в ней записано число 5 (хотя планировалось 11), которое методом Showlnfo() и будет выведено на экран.Во время нахождения в отладчике и выполнения программы по шагам переключиться на запущенное приложение нельзя, так какого выполнение приостановлено. Продолжить его работу можно только нажатием клавиши F9.

Наверное, вы уже поняли причину ошибки. Дело в том, что значение переменной Referee. Human. CurrentScores не прибавлялось к переменной Referee.Human. Scores. Происходила просто перезапись старого значения. Для правильной реализации логики работы надо операцию = заменить на операцию +=:

Referee.Human.Scores += Referee.Human.CurrentScores;

Видите, как сильно может влиять на логику работы всего один пропущенный символ? А подобные опечатки не обнаружит никакой компилятор.

Теперь отлаживаемую программу надо завершить, нажав комбинацию Ctrl+F2, затем убрать точку остановки, перекомпилировать текст и запустить приложение заново. Проверьте его работу — в нужный момент в накопленную человеком сумму запишется число 11. Так и должно быть.По клавише F8 выполняются сразу всё операторы в очередной строке. По клавише F7 происходит «вход внутрь» в очередной метод, при условий, что он, конечно, в данной строке имеется. Например, если должна выполняться строка Referee. ComputerMove();

то при нажатии на клавишу F7 отладчик перейдет к выполнению операторов метода ComputerMove(). По окончании выполнения этого метода отладчик вновь вернется обратно, в метод NextItemClick().






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.