![]() |
Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Часть II. Становимся программистами. F 2 Sav e Ope n F 5 F 6 Nex t flli*F 9 F1 0 Men u fill* » Qui t . F 2 Sav e Ope n F 5 F 6 Nex t flli*F 9 F1 0 Men u fill* » Qui t
мую команду. (Исполняемой называется любая команда, которая не является объяв- лением или комментарием. Именно исполняемая команда вызывает создание машин- ного кода во время компиляции.) После запуска отладчик выполняет все команды вплоть до первой строки функции main (), а затем перехватывает управление. Теперь отладчик ожидает действий со сто- роны программиста. раз выполните команду Step Over rhid e вновь на секунду перейдет в окно пользователя и затем вернется в окно редактирования программы. Теперь будет выде- лена следующая строка. Щелкните мышью на окне пользователя (User Screen), и вы увидите выведенную во время выполнения предыдущей команды строку Эта программа соединяет две строки. Выполнение программы в таком режиме называется пошаговым. Необходимо про- должать выполнение программы в пошаговом режиме до тех пор, пока она не выдаст сообщение об ошибке. Знание команды, которая вызвала ошибку, очень поможет при ее исправлении. Когда вы попытаетесь выполнить команду Step Over в строке с вызовом функции cin . (), отладчик не вернет управление среде разработчика, как обычно. Может показаться, что программа зависла, но причина в другом: отладчик не перехва- тывает управления, пока не завершится команда, а функция getlin e () не может за- вершиться, пока пользователь не введет строку с клавиатуры. Введите первую строку и нажмите <Enter>. Теперь отладчик перехватит управле- ние и остановит выполнение программы после команды << "Введите строку : ". еше один шаг и введите вторую строку. Если отладчик остановился и не возвращается в среду программиста при пошаговом выполнении, это означает, что программа ожидает какого-то события. Скорее всего, программа ожидает ввода с клавиатуры или с дру- гого внешнего устройства. При попытке выполнить функцию concatstrin g {) в пошаговом режиме Step Over программа снова выполнит аварийный останов, как и ранее (рис.
// . . . . // ...и cout << << szStringl << "\n"; return
// // с voi d t has receive d signal : in t 34: 1
Open ZOOM Next L Menu
Ошибка в функции concatstring заставляет программу ава- рийнозавершаться Глава11.ОтладкапрограммнаC++ 127
Пошаговый режим с входом в функции Отладчик позволяет программисту входить в функции и выполнять их в пошаго- вом режиме. Эта возможность понадобится нам при поиске первой ошибки в этой программе. Сначала следует выполнить сброс программы. Для этого перезагрузите отладчик с помощью команды Program Reset. Затем выполняйте программу в пошаговом режиме Step Over, пока не дойдете до функции (). После этого воспользуйтесь командой Step In (пошаговый режим с заходом в и указатель перейдет на начало функции (>, как показано на рис.
Debug Project Options Help
// строки" pszTarget void char { int int '\лм конец строки
// строку к
F 2 Sav e Ope n F 5 F 6 Nex t flli*F 9 F1 0 Men u fill* » Qui t 11.5. Команда Step In заставляет отладчик на первую выпол- няемуюстроку функции Между командами Step In и Step нет никакой разницы, если только в процессе прохода не выполняется вызов функции.
Если ненамеренно выполнить команду Step In, отладчик может запросить имя файла с исходным кодом функции, о которой вы никогда не слыша- ли. Возможно, этот исходный код находится в какой-то из библиотек. В этом случае щелкните на кнопке Cancel и попробуйте разобраться в наборе машинных инструкций (которые вряд ли много скажут даже опытным программистам). Чтобы вернуть себе после этого душевное рав- новесие, откройте окно редактирования программы, установите точку ос- танова так, как описано в следующем разделе, и выполните команду А пока воспользуйтесь командой Step Over, чтобы выполнить первую исполняемую строку функции. Сразу после этого выведет такое же сообщение об ошибке, как и
|
Последнее изменение этой страницы: 2019-04-19; Просмотров: 226; Нарушение авторского права страницы