Udostępnij przez


Ocena wyrażeń w trybie przerwania

W poniższej sekcji opisano proces, który występuje, gdy debuger jest w trybie przerwania i musi przeprowadzić ocenę wyrażeń.

Proces ewaluacji wyrażeń

Poniżej przedstawiono podstawowe kroki związane z oceną wyrażenia:

  1. Menedżer debugowania sesji (SDM) wywołuje metodę IDebugStackFrame2::GetExpressionContext, aby uzyskać interfejs kontekstu wyrażenia IDebugExpressionContext2.

  2. Następnie SDM wywołuje IDebugExpressionContext2::ParseText z ciągiem, który ma zostać przeanalizowany.

  3. Jeśli funkcja ParseText nie zwraca S_OK, zostanie zwrócona przyczyna błędu.

    -inaczej-

    Jeśli funkcja ParseText zwróci S_OK, narzędzie SDM może wywołać metodę IDebugExpression2::EvaluateSync lub IDebugExpression2::EvaluateAsync , aby uzyskać ostateczną wartość z przeanalizowanego wyrażenia.

    • W przypadku korzystania z IDebugExpression2::EvaluateSync, dany interfejs wywołania zwrotnego komunikuje trwający proces ewaluacji. Końcowa wartość jest zwracana w interfejsie IDebugProperty2 .

    • W przypadku korzystania z IDebugExpression2::EvaluateAsync dany interfejs zwrotny komunikuje przebieg procesu oceny. Po zakończeniu oceny funkcja EvaluateAsync wysyła interfejs IDebugExpressionEvaluationCompleteEvent2 za pośrednictwem wywołania zwrotnego. Dzięki temu interfejsowi zdarzeń ostateczny wynik uzyskuje się przy użyciu GetResult.