Sdílet prostřednictvím


Vyhodnocení výrazu okna kukátka

Důležité

V sadě Visual Studio 2015 je tento způsob implementace vyhodnocovačů výrazů zastaralý. Informace o implementaci vyhodnocovačů výrazů CLR najdete v tématu vyhodnocovače výrazů CLR a ukázka vyhodnocovače spravovaných výrazů.

Když se provádění pozastaví, Visual Studio zavolá ladicí modul (DE) k určení aktuální hodnoty každého výrazu v seznamu kukátek. De vyhodnocuje každý výraz pomocí vyhodnocovače výrazů (EE) a Visual Studio zobrazí jeho hodnotu v okně Kukátko .

Následuje přehled toho, jak se vyhodnocuje výraz seznamu sledování:

  1. Visual Studio volá GetExpressionContext de k získání kontextu výrazu, který lze použít k vyhodnocení výrazů.

  2. Pro každý výraz v seznamu kukátků visual Studio volá ParseText pro převod textu výrazu na parsovaný výraz.

  3. IDebugExpressionContext2::ParseText volání Parse provést skutečnou práci parsování textu a vytvořit IDebugParsedExpression objektu.

  4. IDebugExpressionContext2::ParseTextvytvoří objekt IDebugExpression2 a vloží do IDebugParsedExpression něj objekt. Tento IDebugExpression2 objekt se pak vrátí do sady Visual Studio.

  5. Visual Studio volá EvaluateSync k vyhodnocení analyzovaného výrazu.

  6. IDebugExpression2::EvaluateSync předá volání EvaluateSync provést skutečné vyhodnocení a vytvořit IDebugProperty2 objekt, který je vrácen do sady Visual Studio.

  7. Visual Studio volá GetPropertyInfo k získání hodnoty výrazu, který se pak zobrazí v seznamu kukátko.

Parsovat a pak vyhodnotit

Protože analýza komplexního výrazu může trvat mnohem déle než jeho vyhodnocení, proces vyhodnocení výrazu se rozdělí do dvou kroků: 1) parsování výrazu a 2) vyhodnotí analyzovaný výraz. Vyhodnocení tak může proběhnout mnohokrát, ale výraz je potřeba analyzovat pouze jednou. Průběžný parsovaný výraz je vrácen z EE v IDebugParsedExpression objektu, který je zase zapouzdřen a vrácen z DE jako IDebugExpression2 objektu. Objekt IDebugExpression odmašle všechny vyhodnocení objektu IDebugParsedExpression .

Poznámka:

EE není nutné dodržovat tento dvoustupňový proces, i když sada Visual Studio to předpokládá; EE může analyzovat a vyhodnotit ve stejném kroku při volání EvaluateSync (to je například způsob, jak funguje ukázka MyCEE). Pokud váš jazyk může tvořit složité výrazy, můžete chtít oddělit krok analýzy od kroku vyhodnocení. To může zvýšit výkon v ladicím programu sady Visual Studio, když se zobrazuje mnoho sledovacích výrazů.

V této části

Ukázková implementace vyhodnocení výrazu používá ukázku MyCEE k procházení procesu vyhodnocení výrazu.

Vyhodnocení výrazu kukátku vysvětluje, co se stane po úspěšné analýze výrazu.