- •Глава 2 36
- •1 Задание 1 62
- •Лабораторная работа №1
- •Краткие теоретические сведения
- •1.1Создание консольного приложения
- •1.2Отладка программы
- •1.2.1Установка точек останова (Add breakpoint)
- •2.2Идентификаторы
- •2.3Ключевые слова
- •2.4Знаки операций
- •2.5Константы
- •2.6Комментарии
- •2.7.1Понятие типа данных
- •2.7.2Основные типы данных
- •2.7.3Целый тип (int).
- •2.7.4Символьный тип (char).
- •2.7.5Логический тип (bool).
- •2.7.6Вещественный тип (float, double и long double).
- •2.8Переменные
- •2.9Функции и объекты ввода/вывода
- •2.9.1Основные функции ввода/вывода в стиле с:
- •2.10Операции
- •2.10.2Операция определения размера sizeof
- •2.10.4Деление (/) и остаток от деления (%).
- •2.10.8Логические операции (&& и ||).
- •2.10.10 Условная операция (?:).
- •2.11Выражения
- •2.11.1Преобразование типов в выражении.
- •Задание к лабораторной работе №1
- •Контрольные вопросы к лабораторной работе №1
- •1.1Оператор «выражение»
- •1.2Операторы ветвления
- •1.2.1Условный оператор if... Else
- •1.2.2Об условиях в операторе if
- •1.2.3Оператор выбора switch
- •1.3Операторы передачи управления
- •1.3.1Оператор goto
- •1.3.2Оператор break
- •2 Тестирование программ
- •Домашнее Задание
- •Задание к лабораторной работе №2
- •1Задание 1
- •2Задание 2
- •Содержание отчета
- •2Операторы цикла
- •2.1Цикл с предусловием (while)
- •2.2Цикл с постусловием (do … while)
- •2.3Цикл с параметром for
- •3Дополнительные операторы передачи управления
- •3.1Оператор break
- •3.2Оператор continue
- •4Вложенные циклы
- •Домашнее Задание
- •Задание к лабораторной работе №3
- •1Задание 1
- •2Задание 2
- •Содержание отчета
- •Контрольные вопросы к лабораторной работе №3
- •4Программа пузырьковой сортировки
- •Домашнее Задание
- •Задание к лабораторной работе №4
- •Содержание отчета
- •Контрольные вопросы к лабораторной работе №4
- •0 Строка
- •1 Строка
- •5 Строка
- •2Ввод и вывод многомерных массивов
- •Домашнее Задание
- •Задание к лабораторной работе №5
- •4Ссылки
- •5Динамическое распределение памяти
- •5.1Использование стандартных функций malloc и free
- •5.2Использование операторов new и delete
- •Домашнее Задание
- •Задание к лабораторной работе № 6
- •Содержание отчета
- •Контрольные вопросы к лабораторной работе №6
- •Лабораторная работа №7 отладка программы краткие теоретические сведения
- •6Отладочные пункты меню
- •7Элементы отладки
- •7.1Контрольные точки
- •7.1.1Контрольные точки в исходном коде
- •7.1.2Адресные контрольные точки
- •7.1.3Контрольные точки данных
- •7.2Команда Run to Cursor
- •7.3Команда Pause
- •8Наблюдение за переменными
- •8.1Быстрый просмотр данных
- •9Инспектор отладки
- •9.1Инспекция локальных переменных
- •10Другие инструменты отладки
- •10.1Диалог Evaluate/Modify
- •10.2Окно cpu
- •10.3Стек вызовов
- •10.4Команда Go to Address
- •10.5Команда Program Reset
- •Задание на лабораторную работу №7
- •Контрольные вопросы к лабораторной работе №7
- •Приложение I
- •Приложение II Блоки схем алгоритмов согласно гост 19.002 – 80 и 19.003 – 80
- •Приложение III Оформление алгоритма программы в виде блок-схемы
- •Приложение IV Базовая программа для выполнения лабораторных работ
- •Приложение V
- •Приложение VI
- •Список используемых источников
10.3Стек вызовов
Окно стека вызовов (рис. 5.16) открывается командой View Debug Windows 1 Call Stack.
Рис. 5.16 Окно Call Stack
В окне показан список функций, вызванных к данному моменту и еще не завершившихся. Функция, вызванная последней, находится вверху списка. Для функций, имена которых неизвестны, указывается только адрес и имя модуля, как, например, для третьей сверху функции на рисунке. Если дважды щелкнуть на имени некоторой функции, в редакторе будет показан ее исходный код или, если он недоступен, будет открыто окно CPU на соответствующем адресе.
Исследование стека вызовов бывает полезно при возникновении ошибок типа нарушения доступа. На вершине стека будет находиться функция, получившая управление непосредственно перед ошибкой.
10.4Команда Go to Address
Эта команда позволяет отыскать в исходном коде строку, соответствующую некоторому адресу, например, адресу инструкции, вызвавшей ошибку. Если выбрать Goto Address в меню Search или контекстном меню редактора кода (программа должна быть запущена), то появится диалоговая панель, в которой вводится нужный адрес. Отладчик попытается найти соответствующий ему исходный код, который в случае успешного поиска будет показан в редакторе. Если адрес находится за пределами вашего кода, будет выведено сообщение о том, что адрес не может быть найден.
10.5Команда Program Reset
Иногда отлаживаемая программа “зависает” так, что никаким образом нельзя довести ее до сколько-нибудь нормального завершения. В этом случае можно прибегнуть к команде Run>Program Reset, которая аварийно завершает программу приводит ее в исходное состояние. Нужно сказать, что это крайнее средство и не следует им пользоваться просто для того, чтобы побыстрее закончить сеанс отладки. Windows этого не любит, и после команды Program Reset с IDE и системой могут происходить странные вещи.
Пошаговое исполнение кода
Одной из важнейших и самых очевидных операций при отладке является пошаговое исполнение кода. Когда программа приостановлена в контрольной точке, вы можете наблюдать значения различных переменных. Но чтобы найти конкретный оператор, ответственный за неправильную работу программы, нужно видеть, как эти значения меняются при исполнении отдельных операторов. Таким образом, выполняя операторы программы по одному, можно определить момент, когда значения каких-то переменных оказываются совсем не теми, что ожидались. После этого уже можно подумать, почему это происходит и как нужно изменить исходный код, чтобы устранить обнаруженную ошибку.
Эти команды могут выполняться из главного меню Run или с помощью кнопок инструментальной панели.
10.6Step Over
Команда Step Over выполняет оператор, на котором приостановлено выполнение, и останавливается на следующем по порядку операторе. Текущий оператор выделяется в редакторе кода синим фоном и помечается зеленой стрелкой в пробельном поле. Если текущий оператор содержит вызов функции, она выполняется без остановок, и текущим становится первый оператор, следующий за возвратом из функции. Step Over “перешагивает” через вызов функции.
10.7Trace Into
Команда Trace Into эквивалентна Step Over в случае, когда текущий оператор не содержит вызовов функций. Если же оператор вызывает некоторую функцию, то отладчик по команде Trace Into переходит на строку ее заголовка (заголовок при желании тоже можно рассматривать как исполняемый оператор, ответственный за инициализацию локальных переменных-параметров). При следующей команде (все равно – Step Over или Trace Into) текущим станет первый исполняемый оператор тела функции. Trace Into “входит внутрь” функции.
При выполнении команд Step Over и Trace Into в окне CPU отладчик исполняет не операторы, а отдельные машинные инструкции.