Опубликован: 12.02.2013 | Доступ: свободный | Студентов: 791 / 47 | Длительность: 17:51:00
Специальности: Программист
Лекция 4:

Управление решениями в Visual Studio

5.2. Отладка программ

Отладка является важным этапом создания приложений. Среда проектирования приложений для Windows Phone позволяет легко отлаживать программы. При отладке можно просмотреть значения переменных на любом шаге и получить представление о том, насколько правильно работает программа. Программы можно отлаживать на физическом устройстве или в эмуляторе.

Использование эмулятора Windows Phone

Эмулятор Windows Phone дает возможность проверить правильность работы программ. Эмулятор работает так же, как и физическое устройство.

Можно развернуть программу в эмуляторе или в физическом устройстве. Выбрать физическое устройство или эмулятор для выполнения программы можно с помощью раскрывающегося списка справа от кнопки запуска программы (рис. 5.15).

Список целевых устройств, которые можно использовать для запуска программы

Рис. 5.15. Список целевых устройств, которые можно использовать для запуска программы

Если выбрать пункт Windows Phone Device, и при этом физическое устройство не будет подключено, при попытке выполнения программы Visual Studio выдаст ошибку.

В эмуляторе Windows Phone можно использовать мышь для щелчка по элементам. Если в компьютере есть мультисенсорный монитор и операционная система Windows 7, можно использовать мультисенсорные функции пользовательского интерфейса.

Чтобы остановить выполнение программы, нужно нажать на кнопку эмулятора Назад (кнопка со стрелкой влево) или закрыть окно эмулятора.

В состав эмулятора входят не все встроенные программы, которые есть в физическом устройстве. Среди встроенных функций присутствуют только программа Internet Explorer, возможность изменения некоторых настроек системы, включая доступные языки клавиатуры телефона, и эмуляция некоторых функций устройства, а такие программы как Калькулятор, Календарь и интерфейс Zune отсутствуют.

Эмулятор не может работать с такой же скоростью как аппаратные средства Windows Phone. Фактическая скорость приложения ограничена в эмуляторе так, чтобы эмулятор в некоторой степени соответствовал физическому устройству. Однако, имеет смысл предварительно запустить разрабатываемое приложение в физическом устройстве, чтобы определить, как оно будет работать на самом деле.

Когда Visual Studio развертывает приложение в эмуляторе Windows Phone, оно остается там, пока эмулятор не будет перезагружен. Приложение можно запустить повторно, щелкнув по его значку.

Отладчик Visual Studio

Функции отладчика интегрированы в среду Visual Studio. Можно запускать программы прямо в Visual Studio. Можно добавить в программу точки останова. Когда программа дойдет до точки останова, Visual Studio приостановит отладку программы и позволит просмотреть значения переменных в коде программы. Можно добавлять точки останова и при отладке программ, работающих на физическом устройстве. Можно даже устанавливать и удалять контрольные точки, во время работы программы.

Добавление точки останова. Точки останова добавляются одинаково при создании любой программы в Visual Studio: нужно щелкнуть мышью в левом поле напротив строки, в которой нужно установить точку останова. При этом, строка будет выделена цветом. Повторное нажатие в поле уберет точку останова. Когда программа дойдет до этой строки, ее работа приостановится, и можно будет просмотреть значения переменных перед выполнением команды в выделенной строке. Для этого можно навести указатель мыши на нужную переменную в коде программы.

Пошаговое выполнение программы. Можно выполнить одну строку программы, нажав клавишу F11 или аналогичную кнопку на панели инструментов. Каждый раз при нажатии на эту кнопку программа выполнит одну строку кода программы и перейдет к следующей.

Пошаговое выполнение программы осуществляют три клавиши клавиатуры (или аналогичные кнопки на панели инструментов):

  • F11 — выполнение одной строки программы. Если эта строка будет методом, отладчик выполнит одну строку этого метода. Это действие называется "шаг с заходом";
  • F10 — выполнение одной строки программы. Если эта строка будет методом, отладчик выполнит метод целиком. Это действие называется "шаг с обходом". Эта возможность позволяет не выполнять пошаговую отладку метода;
  • Shift + F11 — выполнение всех действий программы до конца текущего метода и выход из него. Это действие называется "шаг с выходом".

Управление выполнением программы

Visual Studio поддерживает связь с работающей в устройстве программой. Отладчик позволяет управлять выполнением программы.

Запуск или возобновление выполнения программы. Для того чтобы запустить программу или продолжить ее выполнение после остановки нужно нажать клавишу F5.

Приостановка выполнения программы. Приостановить выполнение программы полезно, если программа выполняется дольше, чем ожидается, и есть подозрение, что программа "зависла". Чтобы приостановить выполнение программы, нужно нажать клавиши Ctrl + Alt + Break. Также для приостановки выполнения программы можно установить точки останова.

Остановка программы. Клавиши Shift + F5 можно использовать для прекращения работы программы после выполнения текущей операции. Остановку программы нужно использовать с осторожностью, поскольку существует опасность потери или повреждения данных, с которыми работает программа.

Управление точками останова. В Visual Studio есть окно со списком точек останова в программе. Его можно вызвать, выбрав в главном меню пункт Отладка -> Окна -> Точки останова. В этом окне можно установить свойства точки остановки. Можно указать, чтобы точка останова срабатывала после определенного количества заходов, или при выполнении определенного условия. Это полезно в случае, например, если программа завершается неудачей после пятидесятой итерации цикла.

Окно интерпретации. Окно интерпретации можно вызвать, выбрав в главном меню пункт Отладка -> Окна -> Интерпретация. В этом окне можно просмотреть и изменить значения переменных, а также получить значение произвольного выражения.

Краткие итоги

  1. Среда проектирования Visual Studio используется для создания приложений для Windows Phone. Существует бесплатная версия этого инструмента.
  2. Приложения Microsoft .NET состоят из сборок. Сборка может быть исполняемой программой (.exe) или библиотекой (.dll).
  3. Visual Studio объединяет необходимые для создания сборки элементы в проект. В проект включаются исходные файлы и другие ресурсы программы, такие как изображения и звуки.
  4. Решение Visual Studio объединяет несколько проектов. Проекты могут представлять отдельные компоненты большой системы, например серверная и клиентская части приложения.
  5. Приложения Windows Phone могут содержать несколько сборок, включая ресурсы библиотек. Сборка будет содержать ссылки на все используемые ресурсы с указанием их версий.
  6. Приложение Windows Phone перед развертыванием на целевое устройство упаковываются в файл XAP, который содержит сборки программы и все используемые программой ресурсы.
  7. Эмулятор Windows Phone работает на компьютере под управлением Windows и предоставляет эмуляцию функциональности устройства.
  8. Visual Studio предоставляет возможность добавления в программу точек останова, в которых выполнение программы приостанавливается, и программист может просмотреть значения переменных в программе. Точки останова и пошаговое выполнение программы могут использоваться при выполнении программ в физическом устройстве или эмуляторе Windows Phone.

Вопросы

  1. Как можно создать на основе файлов исходного кода программы исполняемый файл?
  2. Как в Visual Studio создать новую программу?
  3. Что такое "пространство имен"?
  4. Как совместно использовать несколько проектов?
  5. Каким образом можно добавить в проект ресурсы?
  6. Что такое "динамическая библиотека"?
  7. Что такое "построение программы"?
  8. Чем отличается термин "решение" от термина "проект"?
  9. Какие типы решений и проектов приложений для Windows Phone поставляются с Windows Phone SDK?
  10. Что представляют собой файлы с расширением .xap?
  11. Как в Visual Studio запустить отладку приложения в эмуляторе Windows Phone?
  12. Какие средства Visual Studio позволяют осуществлять отладку приложений?

Упражнения

Упражнение 1. Создание приложения Калькулятор времени

В этом упражнении вы создадите приложение Калькулятор времени, описанное в упражнении к предыдущей лекции.

Создание пустого приложения Silverlight

  1. Запустите Visual Studio с установленным Windows Phone SDK.
  2. В главном меню выберите пункт Файл -> Создать проект…. Откроется диалоговое окно Создать проект.
  3. В списке установленных шаблонов выберите Silverlight for Windows Phone.
  4. В центральной части окна выберите Приложение Windows Phone.
  5. В нижней части окна в поле Имя введите TimeCalculator.
  6. Выберите подходящий каталог для проекта. По умолчанию Visual Studio поместит проект в папку Visual Studio 2010 \ Projects в папке Документы.
  7. Убедитесь, что флажок Создать каталог для решения установлен, и нажмите OK, чтобы создать новое приложение.
  8. Visual Studio попросит выбрать целевую платформу для нового приложения. Выберите ОС Windows Phone 7.1 и нажмите OK. Visual Studio создаст новое приложение в указанном местоположении.
  9. Нажмите клавишу F5, чтобы запустить пустую программу. Запустится эмулятор Windows Phone (если он еще не был запущен), и приложение будет выполняться в эмуляторе.
  10. Щелкните по окну Visual Studio, чтобы его выбрать. Нажмите клавиши Shift + F5, чтобы остановить выполнение программы. Также можно остановить программу, нажав кнопку Назад в эмуляторе Windows Phone.

Добавление элементов Silverlight

  1. Убедитесь, что в Visual Studio открыто окно MainPage.xaml. Слева находится окно дизайнера (оно похоже на Windows Phone), в центре — код XAML, справа — обозреватель решений. (Указанные области могут располагаться в окне Visual Studio по-другому.)
  2. Измените текст имя страницы в элементе PageTitle на TimeCalculator.
  3. Измените текст МОЕ ПРИЛОЖЕНИЕ в элементе ApplicationTitle на ваше имя.
  4. В главном меню выберите пункт Вид -> Панель элементов, чтобы отобразить на экране панель инструментов с доступными элементами. Элементы можно перетаскивать с панели инструментов в окно дизайнера.
  5. Добавьте следующие элементы пользовательского интерфейса в окно дизайнера приложения и задайте их имена, как указано в таблице:
    Назначение элемента Тип элемента Имя элемента
    Часы времени начала TextBox startHourTextBox
    Минуты времени начала TextBox startMinTextBox
    Часы времени окончания TextBox endHourTextBox
    Минуты времени окончания TextBox endMinTextBox
    Кнопка для вычисления Кнопка calcButton
    Результат TextBlock resultTextBlock
  6. Можно также добавить дополнительные элементы TextBlock, чтобы разместить в окне приложения пояснительный текст.
  7. Настройте свойства добавленных элементов, чтобы приложение выглядело приблизительно таким образом (рекомендуется установить размер текста элементов TextBlock равным 25):

  8. Запустите программу. Обратите внимание, что можно вводить текст в текстовые поля и нажимать на кнопку.

Добавление поведения в приложение

  1. В обозревателе решений откройте файл MainPage.xaml.cs.
  2. Добавьте после конструктора MainPage следующее описание метода calculateMinutes:
    private void calculateMinutes()
    {
        // здесь нужно будет добавить проверку данных и обработку исключений
      
        int startMin = int.Parse(startMinTextBox.Text);
        int startHour = int.Parse(startHourTextBox.Text);
      
        int endMin = int.Parse(endMinTextBox.Text);
        int endHour = int.Parse(endHourTextBox.Text);
    
       // здесь нужно будет добавить код для вычисления времени
    
        int result = 99;
    
        resultTextBlock.Text = "Результат: " + result.ToString();
    }
    
  3. Вернитесь в окно редактора файла MainPage.xaml.
  4. Дважды щелкните мышью по кнопке вычислить. Visual Studio создаст обработчик нажатия на кнопку и откроет код обработчика, созданный в файле MainPage.xaml.cs.
    private void calcButton_Click(object sender, RoutedEventArgs e)
    {
    }
    
  5. Добавьте вызов метода calculateMinutes в этот метод-обработчик.
  6. Запустите программу. Обратите внимание, что при нажатии на кнопку значение результата изменяется на 99.

Завершение создания приложения

  1. В редакторе кода XAML добавьте во все текстовые поля следующий атрибут:
    InputScope="Number"
    
    Это укажет Windows Phone, что в текстовые поля будут вводиться числа.
  2. Добавьте в метод calculateMinutes код для вычисления разности времени между введенными моментами времени (создайте код самостоятельно).
  3. Запустите программу и проверьте правильность ее работы.

Упражнение 2. Отладка приложения

В этом упражнении вы выполните отладку приложения Калькулятор времени, которое создал другой программист. Программа иногда выдает неправильные результаты. Необходимо выполнить отладку программы, чтобы обнаружить проблему.

  1. Откройте проект TimeCalculator, который находится в папке Lab3 TimeCalculator.
  2. Выполните программу. Введите значения Начало: 00:00 и Окончание: 01:00.
  3. Нажмите кнопку вычислить. Обратите внимание, что программа выводит на экран 60 минут, что является правильным результатом.
  4. Введите значения Начало: 00:00 и Окончание: 01:30.
  5. Нажмите кнопку вычислить. Обратите внимание, что программа выводит на экран 60 минут, что является неверным результатом.
  6. Во время работы программы откройте исходный файл MainPage.xaml.cs в обозревателе решений.
  7. Установите точку останова в следующей строке, щелкнув в поле слева от этой строки:
    resultTextBlock.Text = "Результат: " + result.ToString();
    
  8. Нажмите кнопку вычислить еще раз. Теперь программа должна приостановить работу в этой строке.
  9. Просмотрите значения переменных. Попробуйте установить причину возникающей проблемы. Если вы не можете обнаружить ошибку, выполните следующий шаг.
  10. Нажмите клавишу F5 для возобновления программы. Введите значения Начало: 01:02 и Окончание: 03:04. Теперь используйте отладчик, чтобы просмотреть значения переменных startHour, startMin, endHour и endMin.
  11. Определите и исправьте причину ошибок.
  12. Удалите контрольную точку, щелкнув мышью в левом поле еще раз, и проверьте правильность работы программы на тестовых данных.