Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Silnik debugowania musi zarejestrować się jako fabryka klas, postępując zgodnie ze standardami COM, a także zarejestrować się w Visual Studio za pomocą podklucza rejestru Visual Studio.
Uwaga / Notatka
Przykład tego, jak zarejestrować aparat debugowania, można znaleźć w projekcie TextInterpreter, który jest kompilowany jako część Tutorial: Building a debug engine using ATL COM.
Proces serwera DLL
Silnik debugowania jest zwykle konfigurowany we własnej bibliotece DLL jako serwer COM. W związku z tym silnik debugowania musi zarejestrować identyfikator CLSID swojej fabryki klas za pomocą COM, zanim program Visual Studio będzie mógł uzyskać do niego dostęp. Następnie aparat debugowania musi zarejestrować się w programie Visual Studio, aby ustanowić wszelkie właściwości (inaczej znane jako metryki), które obsługuje aparat debugowania. Wybór metryk zapisanych w podkluczu rejestru programu Visual Studio zależy od funkcji, które obsługuje aparat debugowania.
Narzędzia SDK do debugowania wyjaśniają nie tylko lokalizacje rejestru niezbędne do zarejestrowania aparatu debugowania; a także opisują bibliotekę dbgmetric.lib, która zawiera wiele przydatnych funkcji i deklaracji dla programistów C++, co ułatwia manipulację rejestrem.
Example
W poniższym przykładzie (z przykładu TextInterpreter) pokazano, jak używać SetMetric funkcji (z biblioteki dbgmetric.lib), aby zarejestrować aparat debugowania w programie Visual Studio. Przekazywane metryki są również definiowane w pliku dbgmetric.lib.
Uwaga / Notatka
TextInterpreter to podstawowy aparat debugowania; nie inicjuje on — i dlatego nie rejestruje — żadnych innych funkcji. Bardziej kompletny aparat debugowania miałby całą listę wywołań SetMetric lub ich odpowiednik, po jednym dla każdej funkcji obsługiwanej przez aparat debugowania.
// 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);
}