Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе описываются рекомендации по проектированию и тестированию использования собственных объектов отладчика в расширениях JavaScript.
Собственные объекты отладчика представляют различные конструкции и поведение среды отладчика. Объекты можно передать в расширения JavaScript или получить из них, чтобы управлять состоянием отладчика.
Сведения о расширениях JavaScript для объектов отладчика см. в разделе "Собственные объекты отладчика" в расширениях JavaScript.
Общие сведения о работе с JavaScript см. в статье "Скрипт отладчик JavaScript".
Рекомендации по проектированию модели данных отладчика
Принципы проектирования
Рассмотрим следующие принципы, чтобы расширения отладчика отображали сведения, доступные для обнаружения, запроса и скрипта.
- Информация близка к месту ее необходимости. Например, сведения о ключе реестра должны отображаться как часть локальной переменной, содержащей дескриптор ключа реестра.
- Сведения структурированы. Например, сведения о разделе реестра представлены в отдельных полях, таких как тип ключа, ACL ключа, имя ключа и значение. Это означает, что к отдельным полям можно получить доступ без анализа текста.
- Информация согласована. Сведения о дескрипторах разделов реестра представлены в максимально похожем виде на сведения о дескрипторах файлов.
Избегайте этих подходов, которые не поддерживают эти принципы.
- Не структурируйте свои элементы в одну плоскую "Кухня раковина". Упорядоченная иерархия позволяет пользователям искать информацию, которую они ищут без предварительного знания о том, что они ищут и поддерживают обнаружение.
- Не преобразуйте классическое расширение dbgeng, просто переместив его в модель, пока он все еще выводит экраны необработанного текста. Это несовместимо с другими расширениями и не может запрашиваться с помощью выражений LINQ. Вместо этого разделите данные на отдельные запрашиваемые поля.
Рекомендации по именованию
- Заглавная буква полей должна быть PascalCase. Исключение можно рассматривать для имен, которые широко известны в других вариантах написания, например jQuery.
- Избегайте использования специальных символов, которые обычно не используются в идентификаторе C++. Например, избегайте использования таких имен, как "Общая длина" (которая содержит пробел) или "[размер]" (которая содержит квадратные скобки). Это соглашение позволяет упростить использование с языков сценариев, где эти символы не допускаются в составе идентификаторов, а также позволяет упростить использование из командного окна.
Руководство по организации и иерархии
- Не расширяйте верхний уровень пространства имен отладчика. Вместо этого следует расширить существующий узел в отладчике, чтобы информация отображалась, где она наиболее актуальна.
- Не повторяйте понятия. Если вы создаете расширение модели данных, которое содержит дополнительные сведения о концепции, уже существующей в отладчике, расширьте существующую информацию, а не пытаетесь заменить ее новыми сведениями. Другими словами, расширение, отображающее сведения о модуле, должно расширить существующий объект модуля , а не создать новый список модулей.
- Незакреплённые служебные команды должны быть частью пространства имен Debugger.Utility. Они также должны быть вложенными пространствами имен (например , Debugger.Utility.Collections.FromListEntry)
Обратная совместимость и изменения, нарушающие совместимость
Опубликованный сценарий не должен нарушать совместимость с другими скриптами, которые зависят от него. Например, если функция публикуется в модели, она должна оставаться в одном расположении и с теми же параметрами, когда это возможно.
Запрещается использование внешних ресурсов
- Расширения не должны порождать внешние процессы. Внешние процессы могут препятствовать поведению отладчика и неправильно работают в различных сценариях удаленного отладчика (например, dbgsrv remotes, ntsd remotes и ntsd -d remotes)
- Расширения не должны отображать пользовательский интерфейс. Отображение элементов пользовательского интерфейса будет работать неправильно в сценариях удаленной отладки и может нарушить сценарии отладки консоли.
- Расширения не должны управлять обработчиком отладчика или пользовательским интерфейсом отладчика с помощью незадокументированных методов. Это приводит к проблемам совместимости и неправильно работает на клиентах отладчика с различным пользовательским интерфейсом.
- Расширения должны получать доступ к целевой информации только через документированные API отладчика. Попытка получить доступ к сведениям о целевом объекте через API win32 завершится ошибкой для многих удаленных сценариев и даже некоторых локальных сценариев отладки через границы безопасности.
Отсутствие использования конкретных функций Dbgeng
Скрипты, предназначенные для использования в качестве расширений, не должны полагаться на функции dbgeng, когда это возможно (например, выполнение классических расширений отладчика). Скрипты должны использоваться поверх любого отладчика, на котором размещена модель данных.
Тестирование расширений отладчика
Ожидается, что расширения будут работать в широком спектре сценариев. Хотя некоторые расширения могут быть характерными для сценария (например, сценария отладки ядра), большинство расширений должны работать во всех сценариях или иметь метаданные, указывающие на поддерживаемые сценарии.
Режим ядра
- Отладка работающего ядра
- Отладка дампа ядра
Режим пользователя
- Отладка в пользовательском режиме
- Отладка дампа в режиме пользователя
Кроме того, рассмотрим эти сценарии использования отладчика.
- Отладка многопроцессной системы
- Отладка с несколькими сеансами (например, дамп + живой пользователь в одном сеансе)
Использование удаленного отладчика
Проверьте правильную работу с сценариями использования удаленного отладчика.
- Удаленные серверы dbgsrv
- Ntsd удалённые подключения
- ntsd -d remotes
Дополнительные сведения см. в разделе "Отладка с помощью CDB и NTSD" иактивации сервера обработки.
Тестирование регрессии
Изучите использование автоматизации тестирования, которая может проверить функциональные возможности расширений, так как выпускаются новые версии отладчика.
См. также
собственные объекты отладчика в расширениях JavaScript
Собственные объекты отладчика в расширениях JavaScript — сведения об объекте отладчика.