День девятый. Отладка
Вступление
Отладка является необходимой частью разработки приложения. А возможно самой важной частью. Всегда необходимо тщательно тестировать свою программу, чтобы не получить в свой адрес обидные слова, что у автора программы руки растут из одного места.
Application.Current.Host.Settings
Когда вы запускаете приложение в эмуляторе, то сбоку можно наблюдать странные цифры. Когда я увидел их в первый раз, то испугался. Я не понимал, откуда они взялись и что случилось с эмулятором. К счастью, когда стал переводить эту статью, я узнал об их назначении.
Оказывается, если открыть файл App.xaml.cs, то увидите там несколько блоков в операторе if:
// Show graphics profiling information while debugging.
if (System.Diagnostics.Debugger.IsAttached)
{
// Display the current frame rate counters.
Application.Current.Host.Settings.EnableFrameRateCounter = true;
// Show the areas of the app that are being redrawn in each frame.
//Application.Current.Host.Settings.EnableRedrawRegions = true;
// Enable non-production analysis visualization mode,
// which shows areas of a page that are being GPU accelerated with a colored overlay.
//Application.Current.Host.Settings.EnableCacheVisualization = true;
}
Обратите внимание, что по умолчанию работает только первый блок, а остальные два закоментированы. В этой секции кода можно включить некоторые инструменты отладки. А цифры, отображаемые в эмуляторе показывают полезную информацию о работающем приложении. Например, там отображается количество кадров в секунду. Включение всех инструментов отладки обернуто в проверку свойства Debugger.IsAttached. Финальная версия программы не будет использовать инструменты отладки. Таким образом появляется удобная возможность тестировать различные ситуации при работе с приложением: разблокировка меню, тестирование ознакомительной версии и т.д. Иными словами, в режиме отладки вы можете отключить ознакомительную версию и использовать программу на всю катушку, а готовый релиз будет работать с ограничениями. Вот краткое описание используемых инструментов.
EnableFrameRateCounter
Напомним, что это единственная опция, включённая по умолчанию. Позволяет мониторить число кадров в секунду, обновляемых в вашем приложении. Помните, что для работы вполне хватит 24 кадра в секунду, и вам не нужно гнаться за более высокими показателями.
Вот что означает каждая из цифр счётчика:
- Render Thread FPS
- Число кадров в секунду для потока рендеринга
- User Interface Thread FPS
- Число кадров в секунду потока пользовательского интерфейса. В данном потоке кроме всего прочего выполняется связывание данных и анимация, не обрабатываемая потоком рендеринга.
- Texture Memory Usage
- Счётчик видеопамяти, используемой для хранения текстур
- Surface Counter
- Число поверхностей, отправленных на графический ускоритель
- Intermediate Texture Count
- Число промежуточных текстур
- Screen Fill Rate
- Число полностью закрашенных экранов на каждый кадр
Счетчик | Минимально допустимо | Отлично | Теоретический максимум |
---|---|---|---|
Render Thread | 30 fps | 60 fps | 120 fps |
UI Thread | 15 fps | >15 fps | 120 fps |
Screen Fill | Rate 1.0 | <= 2.0 N/A |
После включения данной опции Вы сможете увидеть какие области Вашего приложения перерисовываются. Перерисовываемые области подсвечиваются синим цветом.
Это бывает полезным, если частота обновления кадров очень низка и вы не можете понять, почему это происходит.
EnableCacheVisualization
Другая опция, которая подсвечивает области в Вашем приложении. Речь идет об областях, которые используют аппаратное ускорение. Полезно при работе с анимцией и видео.
Реклама