Апрель 06-08 2007 КОНФЕРЕНЦИЯ РАЗРАБОТЧИКОВ КОМПЬЮТЕРНЫХ ИГР LUA Отладчик для MS Visual Studio Докладчик: Дамир Тенишев Presentation/Presenter Title Slide.

Презентация:



Advertisements
Похожие презентации
БЭСТ Дизайнер проектов Введение Концепции Основные понятия.
Advertisements

Простая автоматизация бизнес процессов С помощью Microsoft Share Point Portal Server И DocsVision Share Point Edition Докладчик Андреев Владимир Сергеевич.
Разработка отладчика для программ на языке haXe и целевой платформы Adobe Flash 9 Выполнил студент 544 группыКрасько Н.Л. Научный руководительПлискин М.М.
Как бизнес может помочь вузам в подготовке ИТ-специалистов – опыт Microsoft Александр Гаврилов Менеджер академических программ Microsoft
Электронный задачник по программированию для системы 1С:Предприятие М. Э. Абрамян, М. Ю. Беренкеева Южный федеральный университет, факультет математики,
Простая автоматизация бизнес-процессов с помощью Microsoft InfoPath На базе Microsoft Share Point Portal Server И DocsVision Share Point Edition Докладчик.
Top 10 возможностей ASP.NET 2.0. Выбор сделан на основе опросов разработчиков Top 10 – горячая десятка возможностей.
Contoso BSC Portal Михаил Козлов Консультант по бизнес решениям Microsoft (095) Microsoft® Office Business.
Microsoft TechDays Виталий Дильмухаметов
Сергей Байдачный Специалист по разработке ПО Майкрософт Украина.
Отладка программы. Классификация ошибок 1.синтаксические; 2. ошибки времени выполнения; 3.алгоритмические. Синтаксические ошибки, обнаруживает компилятор,
Цель проекта: Просмотрев презентацию, вы узнаете: Что такое Исполнитель; Что означает понятия программы и программирования; Как классифицируется программное.
ДонНУ, кафедра КТ, проф.В.К.Толстых WCF-службы Создание и тестирование.dll-библиотеки WCF-служб Из цикла лекций «Internet-технологии разработки приложений»
Выполнил: Гусев Данил. Что такое программное обеспечение? Возможности современного ПК столь велики, что все большее число людей находят ему применение.
TEKTON-Matrix Платформа для распределённых приложений.
Microsoft TechDays Евгений Марченков Эксперт по технологиям разработки ПО Microsoft.
Visual Studio Team System Sergiy Baydachnyy Developer Evangelist
Проф. В.К.Толстых, Технологии разработки Internet- приложений ASP.NET приложения – Модули HTTP, фильтры, события приложения - Global.asax.
1 ИССЛЕДОВАНИЕ ВОЗМОЖНОСТЕЙ COM- ТЕХНОЛОГИИ ДЛЯ ПОСТРОЕНИЯ РАСПРЕДЕЛЕННЫХ ПРОГРАММНЫХ ПРОДУКТОВ Component Object Model Министерство образования и науки.
#html5camp JavaScript на сервере – node.js на Windows Гайдар Руководитель направления веб-технологий, Microsoft.
Транксрипт:

Апрель КОНФЕРЕНЦИЯ РАЗРАБОТЧИКОВ КОМПЬЮТЕРНЫХ ИГР LUA Отладчик для MS Visual Studio Докладчик: Дамир Тенишев Presentation/Presenter Title Slide

Апрель КОНФЕРЕНЦИЯ РАЗРАБОТЧИКОВ КОМПЬЮТЕРНЫХ ИГР Зачем нам скрипты? Возможность передать описание игровой логики дизайнерам. Высокоуровневый, подверженный частым изменениям код. Скрипты удобно использовать для Game Logic, AI, GUI и т.п. Сделать разработку быстрее и, следовательно, дешевле.

Апрель КОНФЕРЕНЦИЯ РАЗРАБОТЧИКОВ КОМПЬЮТЕРНЫХ ИГР Работаем со скриптами Часто используются пользователями, не имеющими специальной подготовки. Требуется много мелких изменений. Изменения требуют проверки. В существующем коде могут быть обнаружены ошибки В существующем коде могут быть обнаружены ошибки Нужно иметь возможность быстро разбираться в процессах, происходящих в системе.

Апрель КОНФЕРЕНЦИЯ РАЗРАБОТЧИКОВ КОМПЬЮТЕРНЫХ ИГР Как отлаживать скрипты Визуальный просмотр текстов и сила ума. Все функции и переменные покрыты детальным логом. Отладчик: контроль исполнения; просмотр стека вызовов; просмотр и модификация и переменных.

Апрель КОНФЕРЕНЦИЯ РАЗРАБОТЧИКОВ КОМПЬЮТЕРНЫХ ИГР Виды отладчиков Готовые языковые среды с отладчиком, но они позволяют работать только со встроенными языковыми средствами. Собственные отладчик и редактор текстов, интегрированные с движком. Комбинированный вариант: написание плагинов расширения для существующих интегрированных сред.

Апрель КОНФЕРЕНЦИЯ РАЗРАБОТЧИКОВ КОМПЬЮТЕРНЫХ ИГР Visual Studio IDE Известная и привычная среда разработки. Управление проектами. Текстовый редактор. Возможность использовать системы контроля версий. Инфраструктура отладки, совместимая со многими языками (С++, C#, HLSL, SQL,..). Дополнительные плагины (LuaLite - syntax highlighting).

Апрель КОНФЕРЕНЦИЯ РАЗРАБОТЧИКОВ КОМПЬЮТЕРНЫХ ИГР LUA отладчик в VS Подсоединение/отсоединение к процессу: Attach, Detach. Контроль исполнения: Break, Continue, Step In, Step Out. Просмотр виртуальных машин исполнения (окно Threads). Назначение точек останова / Breakpoints. Просмотр глобальных и локальных переменных (окно Watch). Просмотр значений переменных под курсором. Синхронизация с исходными кодами (lua файлы). Вывод окна с ошибками исполнения.

Апрель КОНФЕРЕНЦИЯ РАЗРАБОТЧИКОВ КОМПЬЮТЕРНЫХ ИГР Что нужно иметь ? Visual Studio 2005 SDK, свободно доступен на Обзор архитектуры отладчика: MSDN: Visual Studio Debugging Extensibility. SDK содержит исчерпывающий пример отладчика скриптового языка: «Text Interpreter».

Апрель КОНФЕРЕНЦИЯ РАЗРАБОТЧИКОВ КОМПЬЮТЕРНЫХ ИГР Модули отладчика Регистратор Debug-метрик VS, необходим для информирования VS о существовании LUA DebugEngine. Регистратор LUA программы в системе. COM-фабрика, для создания DebugEngine. Набор интерфейсных объектов для общения с VS. Блок обработки сообщений обеспечивает работу COM-взаимодействий. Контроллер исполнения: умеет работать с виртуальными машинами, останавливает и запускает исполнение, получает информацию о стеке, запрашивает переменные и их значения, контролирует точки останова.

Апрель КОНФЕРЕНЦИЯ РАЗРАБОТЧИКОВ КОМПЬЮТЕРНЫХ ИГР Регистрация метрик Информация о DebugEngine вносится в реестр, чтобы Visual Studio узнала про новый тип отладчика и могла его отобразить в окне Processes const char * szRegPath = "Software\\Microsoft\\VisualStudio\\8.0"; SetMetric(metrictypeEngine, __uuidof(Engine), metricName, L"LUA", false, szRegPath); SetMetric(metrictypeEngine, __uuidof(Engine), metricCLSID, CLSID_Engine, false, szRegPath); SetMetric(metrictypeEngine, __uuidof(Engine), metricPortSupplier, CLSID_LocalPortSupplier, false, szRegPath );

Апрель КОНФЕРЕНЦИЯ РАЗРАБОТЧИКОВ КОМПЬЮТЕРНЫХ ИГР Окно Processes

Апрель КОНФЕРЕНЦИЯ РАЗРАБОТЧИКОВ КОМПЬЮТЕРНЫХ ИГР Регистрация программы Программу надо зарегистрировать в системе через CLSID_ProgramPublisher: HRESULT hr = m_srpProgramPublisher.CoCreateInstance(CLSID_ProgramPublisher); if ( FAILED(hr) ) { ATLTRACE("Failed to create the program publisher: 0x%x.", hr); return; } hr = m_srpProgramPublisher-> PublishProgramNode(static_cast (this)); if ( FAILED(hr) ) { ATLTRACE("Failed to publish the program node: 0x%x.", hr); m_srpProgramPublisher.Release(); return; }

Апрель КОНФЕРЕНЦИЯ РАЗРАБОТЧИКОВ КОМПЬЮТЕРНЫХ ИГР COM-фабрика Необходимa для того, чтобы VS создала Debug Engine через CoCreateInstance. DebugEngine находится в одном процессе с виртуальной машиной. Для реализации регистрации используется стандартный класс CAtlExeModule из библиотеки ATL. Регистрация фабрики производится только на время работы приложения, без занесения данных в реестр.

Апрель КОНФЕРЕНЦИЯ РАЗРАБОТЧИКОВ КОМПЬЮТЕРНЫХ ИГР Интерфейс для VS (1) Набор интерфейсных Com объектов: IDebugEngine2 – обеспечивает контроль за сеансом отладки IDebugProgramNode2 – через данный класс процесс регистрируется в операционной системе IDebugProgram2 – представление отлаживаемого процесса для VS IDebugStackFrame2 – представление информации о состоянии стека в VS IDebugThread2 – представление информации о свойствах нитки исполнения (в нашем случае отдельной LUA машины) IDebugExpressionContext2, IDebugProperty2, IDebugExpression2 – предоставление в VS информации о значении переменных IDebugPendingBreakpoint2 – представление точки останова

Апрель КОНФЕРЕНЦИЯ РАЗРАБОТЧИКОВ КОМПЬЮТЕРНЫХ ИГР Интерфейс для VS (2) Набор Debug Events для передача событий в VS: IDebugEngineCreateEvent2 – создана Debug Engine IDebugThreadCreateEvent2 – создана нитка исполнения (у нас представляет отдельную машину исполнения LUA) IDebugThreadDestroyEvent2 – закончила работу нитка исполнения (у нас представляет отдельную машину исполнения LUA) IDebugBreakEvent2 – программа остановлена (например, при обработке Break All) IDebugBreakpointBoundEvent2 – точка останова успешно установлена IDebugBreakpointEvent2 – сработала точка останова IDebugExceptionEvent2 – возникла ошибка исполнения Все Events имеют параметры, указатели на интерфейсы: IDebugProgram2, IDebugThread2, IDebugBoundBreakpoint2, которые VS использует для получения информации об отлаживаемом процессе.

Апрель КОНФЕРЕНЦИЯ РАЗРАБОТЧИКОВ КОМПЬЮТЕРНЫХ ИГР Контроллер исполнения Инкапсулирует скриптовые виртуальные машины. Использует стандартный интерфейс библиотеки LUA. Требуется зарегистрировать все машины исполнения (нужно отслеживать все lua_newstate/lua_close). LUA код должен быть скомпилирован с отладочной информацией (имя файла, строки). Управление исполнением через механизм хуков (lua_sethook, вызов внешнего callbackа на событиях: Execute Line, Call, Return). Доступ к стеку (lua_getstack предоставляет доступ ко всем функциям в стеке). Запрос информации по объектам: lua_getinfo. Доступ к переменным: lua_getlocal, lua_setlocal. Перехват ошибок LUA-программы посредством hooka.

Апрель КОНФЕРЕНЦИЯ РАЗРАБОТЧИКОВ КОМПЬЮТЕРНЫХ ИГР Сценарий работы На старте движка информация о наличии LUA программы публикуется в системе. При попытке подсоединиться к отлаживаемому процессу VS создает в нашем процессе DebugEngine. Регистрация виртуальных машин исполнения в контроллере исполнения и в VS. Начинается прием управляющих сигналов от VS в контроллер исполнения : DebugBreak;Execute;SetBreakPoint;…

Апрель КОНФЕРЕНЦИЯ РАЗРАБОТЧИКОВ КОМПЬЮТЕРНЫХ ИГР Как это выглядит?

Апрель КОНФЕРЕНЦИЯ РАЗРАБОТЧИКОВ КОМПЬЮТЕРНЫХ ИГР Недостатки отладчика Отладчик не поддерживает параллельную отладку в режиме Native, это связано с тем, что (для простоты) DebugEngine располагается в отлаживаемом процессе, и при остановке процесса через Native, DebugEngine блокируется, так как модуль обмена сообщениями не получает управления. С отладчиком мы написали очень много скриптового кода, 5 Мb LUA.

Апрель КОНФЕРЕНЦИЯ РАЗРАБОТЧИКОВ КОМПЬЮТЕРНЫХ ИГР Что дальше? Отладка для любых языков, где есть возможность управлять работой виртуальной машины. Реализовать Native interoperation.

Апрель КОНФЕРЕНЦИЯ РАЗРАБОТЧИКОВ КОМПЬЮТЕРНЫХ ИГР Вопросы … ? ? ?

Апрель КОНФЕРЕНЦИЯ РАЗРАБОТЧИКОВ КОМПЬЮТЕРНЫХ ИГР Parallax Arts Studio, Санкт-Петербург Адреса для тех, кому стало интересно, что дальше… PARALLAX Website Приходите к нам – вместе мы сделаем больше ! Контакты © Parallax Arts Studio, Inc. All rights reserved. This presentation is for informational purposes only. Parallax makes no warranties, express or implied, in this summary.