Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Модуль отладки должен зарегистрироваться как фабрика классов, следуя соглашениям COM, а также зарегистрироваться в среде Visual Studio с помощью подраздела реестра Visual Studio.
Замечание
Пример регистрации обработчика отладки можно найти в примере TextInterpreter, созданном в рамках руководства. Создание обработчика отладки с помощью ATL COM.
Процесс сервера DLL
Обработчик отладки обычно настраивается в собственной библиотеке DLL в качестве COM-сервера. Таким образом, модуль отладки должен зарегистрировать CLSID своей фабрики классов с помощью COM, прежде чем Visual Studio сможет получить к нему доступ. Затем подсистема отладки должна зарегистрировать себя в Visual Studio, чтобы установить любые свойства (метрики), поддерживаемые подсистемой отладки. Выбор метрик, записанных в подраздел реестра Visual Studio, зависит от возможностей, которые поддерживает движок отладки.
Вспомогательные средства sdk для отладки описывают не только расположения реестра, необходимые для регистрации обработчика отладки; Он также описывает библиотеку dbgmetric.lib , которая содержит ряд полезных функций и объявлений для разработчиков C++, которые упрощают управление реестром.
Example
В следующем примере (из примера TextInterpreter) показано, как использовать SetMetric функцию (из dbgmetric.lib), чтобы зарегистрировать подсистему отладки в Visual Studio. Передаваемые метрики также определяются в dbgmetric.lib.
Замечание
TextInterpreter — это базовый механизм отладки; он не устанавливает и, следовательно, не регистрирует никаких других функций. Более полный механизм отладки будет иметь целый список вызовов SetMetric или их эквивалент, по одному для каждой функции, которую поддерживает модуль отладки.
// Define base registry subkey to Visual Studio.
static const WCHAR strRegistrationRoot[] = L"Software\\Microsoft\\VisualStudio\\8.0";
HRESULT CTextInterpreterModule::RegisterServer(BOOL bRegTypeLib, const CLSID * pCLSID)
{
SetMetric(metrictypeEngine, __uuidof(Engine), metricName, L"Text File", false, strRegistrationRoot);
SetMetric(metrictypeEngine, __uuidof(Engine), metricCLSID, CLSID_Engine, false, strRegistrationRoot);
SetMetric(metrictypeEngine, __uuidof(Engine), metricProgramProvider, CLSID_MsProgramProvider, false, strRegistrationRoot);
return base::RegisterServer(bRegTypeLib, pCLSID);
}