Bagikan melalui


Mengevaluasi ekspresi

Ekspresi dibuat dari string yang diteruskan dari jendela Autos, Watch, QuickWatch, atau Immediate . Saat ekspresi dievaluasi, ekspresi menghasilkan string yang dapat dicetak yang berisi nama dan jenis variabel atau argumen dan nilainya. String ini ditampilkan di jendela IDE yang sesuai.

Implementation

Ekspresi dievaluasi ketika program berhenti pada titik henti. Ekspresi itu sendiri diwakili oleh antarmuka IDebugExpression2 , yang mewakili ekspresi terurai yang siap untuk pengikatan dan evaluasi dalam konteks evaluasi ekspresi yang diberikan. Bingkai tumpukan menentukan konteks evaluasi ekspresi, yang disediakan mesin debug (DE) dengan menerapkan antarmuka IDebugExpressionContext2 .

Mengingat string pengguna dan antarmuka IDebugExpressionContext2 , mesin debug (DE) dapat memperoleh antarmuka IDebugExpression2 dengan meneruskan string pengguna ke metode IDebugExpressionContext2::P arseText . Antarmuka IDebugExpression2 yang dikembalikan berisi ekspresi yang diurai siap untuk evaluasi.

IDebugExpression2 Dengan antarmuka, DE bisa mendapatkan nilai ekspresi melalui evaluasi ekspresi sinkron atau asinkron, menggunakan IDebugExpression2::EvaluateSync atau IDebugExpression2::EvaluateAsync. Nilai ini, bersama dengan nama dan jenis variabel atau argumen, dikirim ke IDE untuk ditampilkan. Nilai, nama, dan jenis diwakili oleh antarmuka IDebugProperty2 .

Untuk mengaktifkan evaluasi ekspresi, DE harus menerapkan antarmuka IDebugExpression2 dan IDebugExpressionContext2 . Evaluasi sinkron dan asinkron memerlukan implementasi metode IDebugProperty2::GetPropertyInfo .