Bagikan melalui


Mendaftarkan mesin debug kustom

Mesin debug harus mendaftarkan dirinya sebagai fabrik kelas, mengikuti konvensi COM serta mendaftar dengan Visual Studio melalui sub-kunci registri Visual Studio.

Nota

Anda dapat menemukan contoh cara mendaftarkan mesin debug dalam sampel TextInterpreter, yang dibangun sebagai bagian dari Tutorial: Membangun mesin debug menggunakan ATL COM.

Proses server DLL

Mesin debug biasanya disiapkan di DLL sendiri sebagai server COM. Dengan demikian, mesin debug harus mendaftarkan CLSID pabrik kelas tersebut dengan COM sebelum Visual Studio dapat mengaksesnya. Kemudian, mesin debug harus mendaftarkan dirinya dengan Visual Studio untuk membuat properti apa pun (atau dikenal sebagai metrik) yang didukung mesin debug. Pilihan metrik yang ditulis ke subkuntah registri Visual Studio tergantung pada fitur yang didukung mesin debug.

Pembantu SDK untuk penelusuran kesalahan tidak hanya menjelaskan lokasi registri yang diperlukan untuk mendaftarkan mesin debug; ini juga menjelaskan pustaka dbgmetric.lib , yang berisi sejumlah fungsi dan deklarasi yang berguna untuk pengembang C++ yang membuat manipulasi registri lebih mudah.

Example

Contoh berikut (dari sampel TextInterpreter) menunjukkan cara menggunakan SetMetric fungsi (dari dbgmetric.lib), untuk mendaftarkan mesin debug dengan Visual Studio. Metrik yang diteruskan juga didefinisikan dalam dbgmetric.lib.

Nota

TextInterpreter adalah mesin debug dasar; tidak mengatur—dan karenanya tidak mendaftarkan—fitur lain. Mesin debug yang lebih lengkap akan memiliki seluruh daftar SetMetric panggilan atau yang setara, satu untuk setiap fitur yang didukung mesin debug.

// 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);
}