- •Методическое пособие по выполнению лабораторных работ по курсу «Системное программное обеспечение и операционные системы»
- •Предисловие
- •1. Лабораторная работа № 1.
- •1.1. Теоретические сведения
- •1.3. Подключение отладчика
- •1.4. Контроль переменных и данных различного типа
- •1.5. Варианты заданий
- •2.1. Теоретические сведения
- •1.6. Контрольные вопросы
- •2. Лабораторная работа № 2 Отладка средствами ассемблера
- •3.2.Требования к программе.
- •Связь полей fat с физическим pасположением кластеров на диске показана на рис.4.1.
- •4.2.Требования к программе.
- •4.3. Варианты заданий.
- •4.4.Контрольные вопросы
- •5. Лабораторная работа № 5 Динамически подключаемые библиотеки dll в win32
- •5.1. Теоретические сведения
- •Создание файла Test.Def. Для создания файла Test.Def необходимо выполнить следующие инструкции:
- •5.2.Требования к программе:
- •5.3.Варианты заданий
- •5.4.Контрольные вопросы
- •6. Лабораторная работа №6 Функции и свойства потоков и процессов в win32
- •6.1. Теоретические сведения
- •6.2.Требования к программе:
- •6.3. Варианты заданий
- •6.4.Контрольные вопросы
- •7. Лабораторная работа № 7 Системный Реестр в windows nt.
- •7.1. Теоретические сведения
- •7.2.Требования к программе:
- •8.2.Требования к программе:
- •9.2.Требования к программе:
- •9.3. Варианты заданий.
- •9.4.Контрольные вопросы
- •10. Лабораторная работа № 10 Стили окон.
- •10.1. Теоретические сведения
- •Список рекомендуемой литературы
1.3. Подключение отладчика
Перед тем, как запустить отладчик Visual C++, нужно построить отладочную версию вашей программы. Для такой версии компилятор вставляет в объектные файлы дополнительную символическую информацию. Отладочное построение в C++ устанавливается по умолчанию, но если вы перед этим выполняете построение тиражируемой версии, то следует снова выбрать отладочную.
Перед выбором типа целевого файла необходимо убедиться, что выбран нужный активный проект (требуется только в случае, когда открыто более одного проекта). Для этого в меню Project выберите пункт Set Active Project. Если проектов в списке несколько, выберите тот, который хотите построить.
На рис 1.2 показана инструментальная панель Build с двумя целевыми типами в выпадающем списке. Выберите пункт Win32 Debug. В панели (слева направо) расположены:
выпадающий список выбора активного проекта (выбран Project1),
выпадающий список целевого типа (Win32 Debug),
кнопки Compile (компилировать текущий файл), Build (построить весь проект), Stop (отменить построение или компиляцию), Execute (запустить программу без отладки), Go (запустить программу в отладчике) и Insert / Remove Breakpoint (добавить / удалить точку останова в текущей строке).
Рис. 1.2. Выбор целевой версии Win32 Debug
В предположении, что программа уже успешно скомпилирована, для запуска ее в отладчике нужно выбрать один из пунктов меню Build (рис. 1.3.). Некоторые пункты этого меню продублированы в панели Build..
Рис. 1.3. Запуск отладчика из меню Build.
Ниже приведены описания команд меню Build:
Go. Эта команда запускает отладчик и/или исполняет программу (с полной скоростью), пока не встретится точка останова или конец программы, либо она будет остановлена для пользовательского ввода. Эта команда аналогична кнопке Go инструментальной панели;
Step Into. Эта команда запускает отладчик и/или исполняет программу в пошаговом режиме. Когда текущим оператором является вызов функции или метода, отладчик входит внутрь соответствующей процедуры;
Run To Cursor. Эта команда запускает отладчик и/или исполняет программу до строки, в которой установлен текстовый курсор. Команду можно применять в качестве альтернативы установке обычной точки останова.
Attach To Process… Прикрепляет отладчик к уже работающему процессу. После этого можно приостановить процесс и отлаживать его как обычно.
При компиляции программы с предупреждающими сообщениями ее можно запускать. Нельзя запускать программу только с сообщениями об ошибках.
После запуска отладчика на экране появится новая панель инструментов Debug (рис. 1.4)
Рис. 1.4. Панель инструментов отладки
В панели расположены следующие кнопки: (слева направо):
Restart. Эта команда указывает отладчику, что вы хотите запустить программу с самого начала, а не с текущей позиции отладки.
Stop Debugging. Если в какой-то момент фазы отладки вы осознаете, что проект или рабочее пространство необходимо обновить, то для возврата в режим разработки необходимо нажать эту кнопку, которая завершает отладчик.
Break Execution. Эта команда останавливает исполнение программы в текущей точке.
Apply Code Changes, Edit And Continue. С помощью этой команды вы можете внести в программу изменения исходного кода, произведенные в процессе отладки. Эта команда применяется при работе или приостановке программы в отладчике. Для внесения в отлаживаемую программу сделанных изменений выберите Apply Code Changes.
Edit And Continue. В случае включенной этой опции можно вносить изменения автоматически по командам Go и Step.
Show Next Statement. Эта команда показывает следующий оператор программного кода. Если исходный код не доступен, эта команда показывает оператор в окне дизассемблера.
Step Into. При выполнении этой команды для оператора с вызовом процедуры (функции или метода) производится переход внутрь вызванной процедуры.
Step Over. При включении этой опции для оператора с вызовом процедуры отладчик перешагивает через вызванный код, который выполняется с максимальной скоростью. Программа останавливается на первом операторе после вызова.
Step Out. Эта команда заставляет отладчик переключиться на полную скорость исполнения до конца текущей функции и остановиться на инструкции непосредственно после возврата из нее. Команду можно применить для быстрого возврата из отлаживаемой функции, когда вы убедились, что ошибка находится не в ней.
Run To Cursor. Эта команда похожа на Go, но ей не требуется предварительно определенной точки останова. Для выполнения Run To Cursor нужно просто установить курсор редактора в строку исходного кода, с которой вы хотите продолжить отладку, и выбрать соответствующий значок.
Quick Watch. Команда открывает окно Quick Watch, в котором вы можете оценивать значения выражений.
Watch. Эта команда открывает окно Watch, в котором отображаются переменные приложения по их именам, а так же выбранные выражения.
Variables. Значок открывает окно Variables, в котором отображается информация о переменных текущего и предыдущего операторов, а также возвращаемые функциями значения (страница Auto), локальные переменные текущей функции (страница Locals) и объект, некоторый указывает this (страница this).\
Registers. Команда открывает окно Registers отладчика, отображающее регистры общего назначения CPU и состояние его флагов.
Memory. Команду можно использовать для открытия окна Memory, отображающего состояние памяти программы.
Call Stack. Открывает окно стека вызовов, где отладчик перечисляет вызванные к данному моменту функции, которые еще не закончились.
Disassembly. Открывает окно, в котором показан код языка ассемблера, полученный в результате дизассемблирования компилированной программы.
