Изучение методов тестирования и трассировки программ в среде разработки
Цель работы: Освоить практические метод тестирования и трассировки программы в среде разработки Microsoft Visual Studio.
Обычным способом использования отладчика является установка точек останова, и последующий запуск программы под отладчиком
Простейший способ установить точку останова — щелкнуть на сером поле слева от окна с исходным кодом программы Можно также переместить курсор на нужную строку и выбрать пункт меню Отладка->Точка останова(быстрая клавиша F9). Теперь, если запустить программу под отладчиком, ее выполнение остановится при достижении точки останова Желтая стрелка на красном кружке, обозначающем точку останова, указывает, на какой именно точке останова прервано выполнение программы (рис. 11).
Рис. 11. Остановка выполнения программы на точке останова
Закончив использование точек останова, можете удалить их, повторно щелкнув на сером поле слева от окна с исходным кодом или выбрав пункт в меню Отладка->Точка останова. Если необходимо удалить сразу все точки останова, можно использовать пункт меню Отладка -> Удалить все точки останова (быстрая комбинация клавиш Ctrl-Shift-F9).
Теперь можно просмотреть значения переменных Простейший способ это сделать — навести указатель мыши на переменную, и во всплывающей подсказке около курсора будет выведено значение переменной (рис.12а).
а) б)
Рис. 12. Просмотр значения переменной а) всплывающей подсказкой; б) в окне быстрой проверки
Можно также щелкнуть правой кнопкой мыши на переменной и выбрать пункт Быстрая проверка во всплывшем меню (или воспользоваться кнопкой). На рис. 12б показано типичное окно контрольного значения. В окне быстрой проверки можно также изменить значение переменной
Остановив с помощью отладчика выполнение программы, можно добавить переменную в окно просмотра, щелкнув на ней правой кнопкой мыши и выбрав пункт Добавить контрольное значение во всплывшем меню. В окне Контрольное значение (рис.13) может отображаться несколько переменных, и оно остается открытым во время выполнения программы. При изменении значения переменной новое значение выделяется красным. Из рисунка 13 очевидно, что контролировать можно, не только значение переменной, но и целого выражения.
Рис. 13. Просмотр значений переменных и выражений в окне контрольных значений
Когда программа остановлена на точке останова у программиста имеется возможность:
- продолжить ее выполнение в автоматическом режиме, выбрав пункт меню Отладка->Продолжить (быстрая кнопка F5);
- остановить отладку, завершив текущий сеанс работы программы, выбрав пункт меню Отладка->Остановить отладку (быстрая кнопка Shift-F5);
- продолжить выполнение программы в пошаговом режиме, выбираю пункты меню Отладка->Шаг с заходом (F11)илиОтладка->Шаг с обходом (F10)для выполнения очередного оператора, после чего программа вновь остановится, и у программиста будет возможность посмотреть значения переменных и выражений, результат операций вывода на экране и т.п. Разница между этими пунктами проявляется при отладке программ, содержащих вызовы функции и заключается в выполнении или невыполнении трассировки внутренностей вызываемых функций.
При выполнении операций ввода-вывода в консольных приложениях с использованием кириллицы можно заметить отличия в используемых кодировках операционной системой Windows при кодировании символов русского алфавита в графическом и текстовом режиме (рис.14).
Рис. 14. Результат несовпадения кодировок кириллических символов в графическом и текстовом режиме Windows
Чтобы избежать проблем при выводе (и при вводе) необходимо дать команду программе использовать в текстовом режиме ту же кодировку кириллических символов, что и в графическом (windows-1251). Для этого в начале работы программы вызываем две функции:
#include <windows.h> //не забываем подключать библиотеку
int main()
{ SetConsoleCP(1251); //Устанавливаем кодировку для ввода
SetConsoleOutputCP (1251); //Устанавливаем кодировку для вывода
….
Результат не заставляет себя долго ждать (рис. 15)
Рис. 15. Вывод информации на русском языке в правильной кодировке
Проект консольного приложения на языке С++ в Visual Studio, который при создании был назван Lab1, будет включать файлы и папки (рис. 16):
Рис. 16. Файлы и папки проекта консольного приложения в среде VisualStudio 2008
- файл Lab1.sln файл решения для созданной программы. Решение может состоять из нескольких проектов, в том числе на разных языках программирования. Файл решения содержит информацию о том, какие проекты входят в данное решение. Обычно, эти проекты расположены в отдельных подкаталогах. Cозданный нами проект называется Lab1, следовательно, он будет храниться в папке с аналогичным именем;
-файлLab1.suo – файл параметров решения. Сохраняет настройки для решения, и таким образом каждый раз при открытии проекта или файла в решении он имеет требуемый внешний вид и поведение;
- Lab1.ncb содержит данные, необходимые для работы компонента Visual Studio под названием Intellisence. Intellisence – это инструмент, облегчающий работу в среде программирования, подсказывающая программисту существующие названия переменных, функций и операторов, выполняющая автозавершение кода и др.
В папке Lab1 (рис. 17) хранится все, что относится к конкретному проекту. В ней находятся папки Debug, Release, хранящие файлы с результатами и отчетами после выполненных сборок в соответствующих конфигурациях, и три файла:
- Lab1.cpp – файл исходного кода.
- Lab1.vcproj.user - файл пользовательских настроек, связанных с проектом,
- Lab1.vcproj – файлы с настойками проекта.
Рис. 17. Содержимое папки Lab1 проекта консольного приложения в среде VisualStudio 2008
В папке Debug (рис. 18) хранится
Lab1.exe – исполняемый файл проекта;
Lab1.ilk – файл инкрементальной линковки (incremental linker), используемый компоновщиком для ускорения процесса повторной компоновки проекта;
Lab1.pdb – отладочная информация/информация об именах в исполняемых файлах, используемая отладчиком.
Рис. 18. Содержимое папки Debug проекта консольного приложения в среде VisualStudio 2008
Если будет выполнена сборка в конфигурации Release, то в папке решения из рис. 16 появится еще одна папка – Release, с содержимым, аналогичным рис. 18 по составу, но запускаемый файл уже не будет включать отладочную информацию и будет иметь меньший размер, чем аналогичный в папке Debug.
Л и т е р а т у р а
1. Л. Пауэрс, М. Снелл, Microsoft Visual Studio 2008, Спб.: БХВ-Петербург, 2009г.