Установим точку останова на первой выполнимой инструкции, щёлкнув слева от строки вывода в cout или воспользовавшись клавишами , как сказано в табл. 10.1. При этом вы увидите появившийся маленький красный кружок, говорящий об установленной точке останова ( рис. 10.2 ).
Теперь продолжим выполнение программы под отладчиком, либо выбирая команду меню Debug => Debug ( Отладка => Отладка ) , либо щелчком на соответствующей пиктограмме в панели отладки, либо при помощи клавиши . Выполнение программы немедленно прекращается на первой же строке, а подсветка строки из красной делается синей, указывая, что выполнение программы заморожено на данной строке.

Теперь вы можете выбрать в меню команду Debug => Next Step ( Отладка => Следующий шаг ) либо нажать клавишу для выполнения одной строки программы.

Синяя подсветка перемещается к следующей выполнимой инструкции, пропуская два объявления переменных. ( Объявления не являются выполнимыми командами; они всего лишь выделяют память для объявляемых переменных. ) Такое выполнение одной инструкции С++ называется пошаговым выполнением программы. Вы можете переключиться в окно консоли программы и посмотреть, что именно вывела программа при выполнении этой инструкции ( рис. 10.3 ).
_________________
136 стр. Часть 2. Становимся функциональными программистами

Рис. 10.2. Точку останова легко опознать по маленькому красному кружку

Рис. 10.3. В любой момент вы можете переключиться на окно выполняемой программы
Выполнение двух последующих инструкций приводит нас к вызову функции StringEmUp( ) .


Если опять выбрать команду Debug => Next Step ( Отладка => Следующий шаг ) , программа аварийно завершится. Теперь мы знаем, что проблема кроется в этой функции.


«Если сбой происходит при вызове некоторой функции, то либо ошибка содержится в коде функции, либо ей передаются некорректные аргументы.»
[ Советы ]
_________________
137 стр. Глава 10. Отладка программ на С++
Команда Debugs => Next Step ( Отладка => Следующий шаг ) рассматривает вызов функции как единую команду. Однако на самом деле функция состоит из ряда отдельных инструкций С++, и для отладки нам надо пройти их пошагово. Такая функциональность обеспечивается командой Debug => Step Into ( Отладка => Шаг внутрь ) .
Перегрузите программу при помощи пункта меню Debug => Program Reset ( Отладка => Остановить выполнение ) либо соответствующей пиктограммы на панели отладки или клавиш . Теперь, чтобы сэкономить время, отключите установленную точку останова, щёлкнув на красном кружке, и установите новую на вызове функции stringEmUp( ) , как показано на рис. 10.4.

Рис. 10.4. Установка точки останова на вызове функции stringEmUp( )

«Вы можете установить в программе столько точек останова, сколько вам требуется.»
[ Советы ]
Теперь перезапустите программу на выполнение, и она остановится на вызове функции StringEmUp( ) .

Войдите в функцию, воспользовавшись командой Debug => Step into ( Отладка => Шаг внутрь ) , как показано на рис. 10.5.
Читать дальше