Bagikan melalui


IDebugSymbolProvider

Antarmuka ini mewakili penyedia simbol yang menyediakan simbol dan jenis, mengembalikannya sebagai bidang.

Sintaks

IDebugSymbolProvider : IUnknown

Catatan untuk Pelaksana

Penyedia simbol harus menerapkan antarmuka ini untuk menyediakan informasi simbol dan jenis ke evaluator ekspresi.

Catatan untuk Penelepon

Antarmuka ini diperoleh dengan menggunakan fungsi COM CoCreateInstance (untuk penyedia simbol yang tidak dikelola) atau dengan memuat rakitan kode terkelola yang sesuai dan membuat instans penyedia simbol berdasarkan informasi yang ditemukan dalam perakitan tersebut. Mesin debug membuat instans penyedia simbol untuk bekerja dalam koordinasi dengan evaluator ekspresi. Lihat Contoh untuk satu pendekatan untuk membuat instans antarmuka ini.

Metode dalam Urutan Vtable

Tabel berikut memperlihatkan metode IDebugSymbolProvider.

Metode Deskripsi
Initialize Ditolak. Jangan gunakan.
Uninitialize Ditolak. Jangan gunakan.
GetContainerField Mendapatkan bidang yang berisi alamat debug.
GetField Ditolak. Jangan gunakan.
GetAddressesFromPosition Peta posisi dokumen ke dalam array alamat debug.
GetAddressesFromContext Peta konteks dokumen ke dalam array alamat debug.
GetContextFromAddress Peta alamat debug ke dalam konteks dokumen.
GetLanguage Mendapatkan bahasa yang digunakan untuk mengkompilasi kode di alamat debug.
GetGlobalContainer Ditolak. Jangan gunakan.
GetMethodFieldsByName Mendapatkan bidang yang mewakili nama metode yang sepenuhnya memenuhi syarat.
GetClassTypeByName Mendapatkan jenis bidang kelas yang mewakili nama kelas yang sepenuhnya memenuhi syarat.
GetNamespacesUsedAtAddress Membuat enumerator untuk namespace yang terkait dengan alamat debug.
GetTypeByName Peta nama simbol ke jenis simbol.
GetNextAddress Mendapatkan alamat debug yang mengikuti alamat debug tertentu dalam metode .

Keterangan

Antarmuka ini memetakan posisi dokumen ke alamat debug dan sebaliknya.

Persyaratan

Header: sh.h

Namespace: Microsoft.VisualStudio.Debugger.Interop

Rakitan: Microsoft.VisualStudio.Debugger.Interop.dll

Contoh

Contoh ini menunjukkan cara membuat instans penyedia simbol, mengingat GUID-nya (mesin debug harus mengetahui nilai ini).

// A debug engine uses its own symbol provider and would know the GUID
// of that provider.
IDebugSymbolProvider *GetSymbolProvider(GUID *pSymbolProviderGuid)
{
    // This is typically defined globally. For this example, it is
    // defined here.
    static const WCHAR strRegistrationRoot[] = L"Software\\Microsoft\\VisualStudio\\8.0Exp";
    IDebugSymbolProvider *pProvider = NULL;
    if (pSymbolProviderGuid != NULL) {
        CLSID clsidProvider = { 0 };
        ::GetSPMetric(*pSymbolProviderGuid,
                      storetypeFile,
                      metricCLSID,
                      &clsidProvider,
                      strRegistrationRoot);
        if (IsEqualGUID(clsidProvider,GUID_NULL)) {
            // No file type provider, try metadata provider.
            ::GetSPMetric(*pSymbolProviderGuid,
                          ::storetypeMetadata,
                          metricCLSID,
                          &clsidProvider,
                          strRegistrationRoot);
        }
        if (!IsEqualGUID(clsidProvider,GUID_NULL)) {
            CComPtr<IDebugSymbolProvider> spSymbolProvider;
            spSymbolProvider.CoCreateInstance(clsidProvider);
            if (spSymbolProvider != NULL) {
                pProvider = spSymbolProvider.Detach();
            }
        }
    }
    return(pProvider);
}

Baca juga