
- •Лабораторная работа №2 (1 часть) Отладка консольного приложения.
- •Отладочная и окончательная версии.
- •Переключение между отладочной и окончательной версией.
- •Установки по умолчанию для отладочной и окончательной версий
- •Изменение опций отладки
- •Изменение формата генерируемой отладочной информации
- •Генерация карты символов
- •Что такое файл .Pdb?
- •Что такое файл .Dbg?
- •/Gd, /Gr, /Gz (соглашения о вызовах)
- •Отладочные макросы
- •Установка точек останова
- •Расширенные точки останова
- •Установка точек трассировки
- •Использование Утверждений
- •Отладка программы
- •Использование циклов для решения задач численными методами Вычисление значения с заданной точностью методом прямоугольников
- •Вычисление по формуле Симпсона путем деления отрезка [a,b] на множество более мелких отрезков
- •Методом простых итераций
- •Методом деления отрезка пополам
Изменение опций отладки
Следующие шаги описывают, как менять опции отладчика:
Выберите главное меню Project и в нем пункт Settings. Появится диалоговое окно Project Settings.
Выберите закладку C/C++.
Выберите опцию из выпадающего списка Debug info.
Нажмите OK, чтобы подтвердить выбор опции и закрыть диалог.
Изменение формата генерируемой отладочной информации
Следующие пять шагов показывают детали того, как конфигурировать компоновщик для опций Link for Microsoft Format (по умолчанию), COOF или обеих сразу:
В меню Project выберите Settings. Появится диалоговое окно Project Settings.
Выберите закладку Link.
В выпадающем списке Category выберите опцию Debug.
Выберите Microsoft Format (default), COOF Format или Both Formats.
Нажмите OK, чтобы активировать выбор опции и закрыть диалог.
Генерация карты символов
При отладке приложения, особенно если требуется делать специфические распечатки памяти, бывает полезен файл карты символов. Это просто текстовый файл, содержащий следующую информацию о компонуемой программе:
Имя модуля, или базовое имя файла.
Метка, времени для заголовка файла программы.
Список программных групп, со стартовым адресом каждой в форме segment::offset, а также длиной, именем и классом группы.
Листинг публичных символов, каждого со своим адресом (segment::off- set), именем, плоским адресом и файлом .obj, где он определен.
Входная точка модуля в форме segment::offset.
Чтобы генерировать файл карты символов, сделайте следующее:
В меню Project выберите Settings. Появится диалоговое окно Project Settings.
Выберите закладку Link.
В выпадающем списке Category выберите опцию Debug.
Пометьте флажок Generate mapfile.
Введите в текстовом окне Mapfile name желаемое имя выходного файла, или оставьте по умолчанию.
Нажмите ОК, чтобы активировать выбор опции и закрыть диалог.
Переадресация ввода и вывода
Microsoft Visual C++ позволяет переадресовать ввод или вывод консольного приложения Win32 в любое место. Для этого нужно сделать следующее:
В меню Project выберите Settings. Появится диалоговое окно Project Settings.
Выберите закладку Debug.
В текстовом окне Program Arguments специфицируйте одну или несколько команд переадресации, перечисленных в таблице 3.2. Вы можете указать любую их комбинацию.
Нажмите ОК, чтобы активировать переадресацию и закрыть диалог.
В системе по умолчанию всегда открыты три "файла" -- stdin (клавиатура), stdout (экран) и stderr (вывод сообщений об ошибках на экран). Эти и любые другие открытые файлы могут быть перенаправлены. В данном случае, термин "перенаправление" означает получение вывода из файла, команды, программы, сценария или даже отдельного блока в сценарии и передача его на вход в другой файл, команду, программу или сценарий.
С каждым открытым файлом связан дескриптор файла. Дескрипторы файлов stdin, stdout и stderr -- 0, 1 и 2, соответственно. При открытии дополнительных файлов, дескрипторы с 3 по 9 остаются незанятыми.
Таблица 3.2. Команды переадресации
1>filename
|
Перенаправление вывода (stdout) в файл "filename". |
1>>filename |
Перенаправление вывода (stdout) в файл "filename", файл открывается в режиме добавления. |
2>filename
|
Перенаправление stderr в файл "filename". |
2>>filename |
Перенаправление stderr в файл "filename", файл открывается в режиме добавления. |
&>filename |
Перенаправление stdout и stderr в файл "filename". |