注册自定义调试引擎

调试引擎必须按照 COM 约定自行注册为类工厂,并通过 Visual Studio 注册表子项向 Visual Studio 注册。

注意

可以在 TextInterpreter 示例中找到有关如何在 TextInterpreter 示例中注册调试引擎的示例,该示例是教程的一部分 :使用 ATL COM 生成调试引擎。

DLL 服务器进程

调试引擎通常在其自己的 DLL 中设置为 COM 服务器。 因此,在 Visual Studio 可以访问它之前,调试引擎必须在 COM 中注册其类工厂的 CLSID。 然后,调试引擎必须向 Visual Studio 注册自身,以建立调试引擎支持的任何属性(否则称为指标)。 写入 Visual Studio 注册表子项的指标的选择取决于调试引擎支持的功能。

用于调试 的 SDK 帮助程序不仅描述了注册调试引擎所需的注册表位置;它还介绍了 dbgmetric.lib 库,该库包含许多有用的函数和声明,供 C++ 开发人员更轻松地操作注册表。

示例

以下示例(来自 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);
}