День девятый. Отладка

Вступление

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

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 Thread30 fps60 fps120 fps
UI Thread15 fps>15 fps120 fps
Screen FillRate 1.0<= 2.0 N/A
EnableRedrawRegions

После включения данной опции Вы сможете увидеть какие области Вашего приложения перерисовываются. Перерисовываемые области подсвечиваются синим цветом.

Это бывает полезным, если частота обновления кадров очень низка и вы не можете понять, почему это происходит.

EnableCacheVisualization

Другая опция, которая подсвечивает области в Вашем приложении. Речь идет об областях, которые используют аппаратное ускорение. Полезно при работе с анимцией и видео.

Реклама