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.
Penting
Di Visual Studio 2015, cara menerapkan evaluator ekspresi ini tidak digunakan lagi. Untuk informasi tentang menerapkan evaluator ekspresi CLR, silakan lihat Evaluator Ekspresi CLR dan Sampel Evaluator Ekspresi Terkelola.
Antarmuka ini mewakili evaluator ekspresi.
Sintaks
IDebugExpressionEvaluator : IUnknown
Catatan untuk Pelaksana
Evaluator ekspresi harus mengimplementasikan antarmuka ini.
Catatan untuk Penelepon
Untuk mendapatkan antarmuka ini, buat instans evaluator ekspresi melalui CoCreateInstance metode dengan menggunakan ID kelas (CLSID) evaluator. Lihat Contoh.
Metode dalam Urutan Vtable
Tabel berikut memperlihatkan metode IDebugExpressionEvaluator.
| Metode | Deskripsi |
|---|---|
| Pilah | Mengonversi string ekspresi menjadi ekspresi yang diurai. |
| GetMethodProperty | Mendapatkan variabel lokal, argumen, dan properti metode lainnya. |
| GetMethodLocationProperty | Mengonversi lokasi metode dan mengimbangi menjadi alamat memori. |
| SetLocale | Menentukan bahasa mana yang akan digunakan untuk membuat hasil yang dapat dicetak. |
| SetRegistryRoot | Mengatur akar registri. Digunakan untuk penelusuran kesalahan berdampingan. |
Keterangan
Dalam situasi umum, mesin debug (DE) membuat instans evaluator ekspresi (EE) sebagai akibat dari panggilan ke ParseText. Karena DE mengetahui bahasa dan vendor EE yang ingin digunakannya, DE mendapatkan CLSID EE dari registri ( Pembantu SDK untuk fungsi Debugging , GetEEMetric, membantu pengambilan ini).
Setelah EE dibuat, DE memanggil Parse untuk mengurai ekspresi dan menyimpannya di objek IDebugParsedExpression . Kemudian, panggilan ke EvaluateSync mengevaluasi ekspresi.
Persyaratan
Header: ee.h
Namespace: Microsoft.VisualStudio.Debugger.Interop
Rakitan: Microsoft.VisualStudio.Debugger.Interop.dll
Contoh
Contoh ini menunjukkan cara membuat instans evaluator ekspresi yang diberikan penyedia simbol dan alamat dalam kode sumber. Contoh ini menggunakan fungsi, GetEEMetric, dari SDK Helpers untuk pustaka Debugging , dbgmetric.lib.
IDebugExpressionEvaluator GetExpressionEvaluator(IDebugSymbolProvider pSymbolProvider,
IDebugAddress *pSourceAddress)
{
// This is typically defined globally but is specified here just
// for this example.
static const WCHAR strRegistrationRoot[] = L"Software\\Microsoft\\VisualStudio\\8.0Exp";
IDebugExpressionEvaluator *pEE = NULL;
if (pSymbolProvider != NULL && pSourceAddress != NULL) {
HRESULT hr = S_OK;
GUID languageGuid = { 0 };
GUID vendorGuid = { 0 };
hr = pSymbolProvider->GetLanguage(pSourceAddress,
&languageGuid,
&vendorGuid);
if (SUCCEEDED(hr)) {
CLSID clsidEE = { 0 };
CComPtr<IDebugExpressionEvaluator> spExpressionEvaluator;
// Get the expression evaluator's CLSID from the registry.
::GetEEMetric(languageGuid,
vendorGuid,
metricCLSID,
&clsidEE,
strRegistrationRoot);
if (!IsEqualGUID(clsidEE,GUID_NULL)) {
// Instantiate the expression evaluator.
spExpressionEvaluator.CoCreateInstance(clsidEE);
}
if (spExpressionEvaluator != NULL) {
pEE = spExpressionEvaluator.Detach();
}
}
}
return pEE;
}