Войти
ПрограммированиеТерминыГрафика

DirectX Debug Runtime (Отладочный режим DirectX)

DirectX Debug Runtime (другое название — Developer Runtime) — это специальная отладочная версия DirectX, позволяющая разработчикам отлавливать ошибки в своем коде. Debug Runtime отличается от Retail Runtime, которая устанавливается конечным пользователям, тем, что все вызовы API подлежат валидации: проверяются аргументы, проверяется текущий стейт и т.п, то есть то, что практически не выполняется в retail ради повышения производительности.

Кроме того, каждый раз, когда происходит ошибка, Debug Runtime очень любит писать поэмы в Output-окно отладчика о том, какой программист глупый и ничего не смыслит в программировании под DirectX. Эти поэмы довольно полезны, поскольку в них содержится информация, которая по каким-то причинам не попала в документацию к SDK. Так что сообщения Debug Runtime в этом свете можно рассматривать как бонусную документацию.

Включить Debug Runtime можно в DirectX Control Panel, которая живет по адресу:
$(DXSDK_DIR)Utilities\Bin\x86\dxcpl.exe

На панелях нужных компонентов DirectX необходимо пометить Use Debug Version of..., и затем выкрутить слайдер Debug Output Level в крайнее положение. Стоит также выставить интересующие флажки в рамке Debugging, рекомендуется выставить 1, 2, 3 и изредка 4-ю опции. Поле "Break On AllocID" тоже довольно интересно, поскольку позволяет узнать, какой именно ресурс течет, когда Debug Runtime ругнется на утечку. (Сюда вписываем AllocID из соответствующего сообщения об утечке.)

Все! Теперь когда программа сделает что-то нехорошее, например попытается залочить обычную текстуру в D3DPOOL_DEFAULT, в окне Output (при отладке в Visual Studio), появится сообщение о том, что так делать нельзя.

Очень интересен тот факт, что очень много игр даже от производителей, имеющих мировую известность, (навскидку вспоминаются C&C: Generals), плохо работают под Debug Runtime. Это наводит на определенные мысли.

Также, есть мнение, что 80% всех вопросов по Direct3D, задаваемых в форуме, связаны с тем, что автор вопроса даже не подозревает о наличии такой полезнейшей вещи, как Debug Runtime.

Что такое DirectX Debug Runtime (Отладочный режим DirectX)?

#debug, #DirectX

13 апреля 2008 (Обновление: 14 мар. 2012)

Комментарии [25]