Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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);
}