Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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ů.
Integrace proprietárního jazyka do ladicího balíčku sady Visual Studio znamená, že musíte nastavit požadovaná rozhraní vyhodnocovače výrazů (EE) a volat rozhraní zprostředkovatele symbolů běhového prostředí společného jazyka (SP) a rozhraní vazby. Objekty SP a binder, spolu s aktuální adresou spuštění, tvoří kontext, ve kterém se vyhodnocují výrazy. Informace, které tato rozhraní vytvářejí a využívají, představují klíčové koncepty v architektuře EE.
Parsování výrazu
Při ladění programu se výrazy vyhodnocují z několika důvodů, ale vždy, když byl laděný program zastavený na zarážce (umístěné uživatelem nebo způsobené výjimkou). V tento okamžik Visual Studio získává rámec zásobníku představovaný rozhraním IDebugStackFrame2 z ladicího modulu (DE). Visual Studio pak volá GetExpressionContext, aby získalo rozhraní IDebugExpressionContext2. Toto rozhraní představuje kontext, ve kterém lze výrazy vyhodnotit; ParseText je vstupním bodem procesu vyhodnocení. Až do tohoto okamžiku jsou všechna rozhraní implementována DE.
Při volání IDebugExpressionContext2::ParseText DE vytvoří instanci EE přidruženou k jazyku zdrojového souboru, ve kterém došlo k zarážce (DE v tomto okamžiku vytvoří i instanci SH). EE je reprezentován rozhraním IDebugExpressionEvaluator. DE pak zavolá Parse pro převod výrazu (v textové podobě) na zpracovaný výraz, připravený k vyhodnocení. Tento analyzovaný výraz je reprezentován prostřednictvím rozhraní IDebugParsedExpression. Výraz se obvykle parsuje a v tomto okamžiku se nevyhodnocuje.
DE vytvoří objekt, který implementuje IDebugExpression2 rozhraní, umístí IDebugParsedExpression objekt do objektu IDebugExpression2 a vrátí IDebugExpression2 objekt z IDebugExpressionContext2::ParseText.
Vyhodnocení výrazu
Visual Studio volá buď EvaluateSync , nebo EvaluateAsync k vyhodnocení analyzovaného výrazu. Obě tyto metody volají EvaluateSync (IDebugExpression2::EvaluateSync volá metodu okamžitě, zatímco IDebugExpression2::EvaluateAsync volá metodu prostřednictvím vlákna na pozadí) k vyhodnocení parsovaného výrazu a vrácení rozhraní IDebugProperty2 , které představuje hodnotu a typ analyzovaného výrazu.
IDebugParsedExpression::EvaluateSync s využitím zadaného SH, adresy a svázání převede analyzovaný výraz na skutečnou hodnotu, kterou reprezentuje rozhraní IDebugProperty2.
Například
Po dosažení zarážky za běhu programu se uživatel rozhodne zobrazit proměnnou v dialogovém okně QuickWatch. Toto dialogové okno zobrazuje název proměnné, jeho hodnotu a typ. Uživatel může obvykle změnit hodnotu.
Po zobrazení dialogového okna QuickWatch se název zkoumané proměnné odešle jako text do funkce ParseText. Vrátí IDebugExpression2 objekt představující parsovaný výraz, v tomto případě proměnnou.
Funkce EvaluateSync se pak volá k vytvoření objektu IDebugProperty2 , který představuje hodnotu a typ proměnné a také jeho název. Zobrazí se tyto informace.
Pokud uživatel změní hodnotu proměnné, Je volána SetValueAsString s novou hodnotou, která změní hodnotu proměnné v paměti, aby se použila při spuštění programu.
Další podrobnosti o tomto procesu zobrazení hodnot proměnných najdete v tématu Zobrazení místních hodnot. Další podrobnosti o tom, jak je změněna hodnota proměnné, najdete v části Změna hodnoty místní proměnné.
V této části
Kontext vyhodnocení poskytuje argumenty, které se předávají při volání EE DE.
Rozhraní vyhodnocovače klíčových výrazů popisují klíčová rozhraní potřebná při psaní EE spolu s kontextem vyhodnocení.