Udostępnij za pośrednictwem


DkmStepper Klasa

Definicja

DkmStepper reprezentuje żądanie kroku wątku. Ułatwia to współużytkowany okres istnienia obiektu między różnymi monitorami debugowania środowiska uruchomieniowego, które uczestniczą w krokach.

public ref class DkmStepper : Microsoft::VisualStudio::Debugger::DkmDataContainer, IDisposable
[System.Runtime.InteropServices.Guid("2aae9764-33a3-8fc7-22ff-e27c9de91bda")]
public class DkmStepper : Microsoft.VisualStudio.Debugger.DkmDataContainer, IDisposable
[<System.Runtime.InteropServices.Guid("2aae9764-33a3-8fc7-22ff-e27c9de91bda")>]
type DkmStepper = class
    inherit DkmDataContainer
    interface IDisposable
Public Class DkmStepper
Inherits DkmDataContainer
Implements IDisposable
Dziedziczenie
Dziedziczenie
Atrybuty
Implementuje

Właściwości

CodePath

[Opcjonalnie] Jeśli stepKind to StepIntoSpecific, określa, do którego wywołania wchodzimy. W przeciwnym razie ma wartość NULL.

CrossThreadParent

[Opcjonalnie] W przypadku utworzenia nowego kroku przy użyciu metody OnCrossThreadStepArbitration menedżer kroków ustawi to pole, aby ułatwić powrót do oryginalnego kroku, jeśli krok między wątkami zakończy się niepowodzeniem lub będzie musiał powrócić do powrotu. Przestarzałe. Zamiast tego użyj polecenia GetCrossThreadParent.

CurrentCodePaths

[Opcjonalnie] W przypadku debugowania zarządzanego zawiera wszystkie ścieżki kodu w bieżącym zakresie kroków. W przeciwnym razie ma wartość NULL.

Ten interfejs API został wprowadzony w programie Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

CurrentMethodName

[Opcjonalnie] W przypadku debugowania zarządzanego zawiera bieżącą nazwę metody. W przeciwnym razie ma wartość NULL.

Ten interfejs API został wprowadzony w programie Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

FrameBase

Podstawa ramki pierwszej ramki na początku kroku. Ta wartość zostanie MAXUINT64, jeśli nie określono wartości StartingAddress.

IsUnloaded

Zwraca wartość true, jeśli dla tego obiektu zostało podniesione zdarzenie "unloaded" (na przykład: DkmThread::Unload jest wywoływane) lub jeśli obiekt został zamknięty. Należy pamiętać, że podczas sprawdzania tego stanu należy zachować ostrożność, ponieważ bez synchronizacji zwrócony stan może nie być już dokładny po odczytaniu instrukcji.

(Odziedziczone po DkmDataContainer)
ShouldCaptureReturnValue

W przypadku debugowania zarządzanego wskazuje, czy krokper chciał przechwycić wartość zwracaną podczas wykonywania kroków. Wartość domyślna to false.

Ten interfejs API został wprowadzony w programie Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

SourceId

Identyfikuje źródło obiektu. Identyfikatory SourceId służą do włączania filtrowania w scenariuszach, gdy wiele składników może tworzyć wystąpienia klasy. Na przykład identyfikatory źródła mogą służyć do określenia, czy punkt przerwania pochodzi z usługi AD7 AL (np. punkt przerwania użytkownika lub inny punkt przerwania widoczny na poziomie SDM) zamiast punktu przerwania, który może zostać utworzony przez inny składnik (na przykład wewnętrzny punkt przerwania używany do wykonywania kroków).

StartingAddress

[Opcjonalnie] Adres instrukcji procesu w momencie rozpoczęcia tego kroku. Będzie to wartość NULL, jeśli krok pochodzi z wątku bez ramek (skrypt & tylko zarządzany).

StepKind

DkmStepKind opisuje sposób wykonywania kroków wątku po wywołaniu metody kroku.

StepUnit

DkmStepUnit opisuje stopień szczegółowości kroku po wywołaniu metody Step.

Thread

Element DkmThread reprezentuje wątek uruchomiony w procesie docelowym.

UniqueId

Identyfikator GUID, który jednoznacznie identyfikuje ten identyfikator DkmStepper.

Metody

BeforeEnable()

Wywoływana przez menedżera zdarzeń zatrzymywania przed rozpoczęciem operacji kroku. Menedżer zdarzeń zatrzymania powiadomi wszystkie wystąpienia środowiska uruchomieniowego, aby umożliwić skonfigurowanie dowolnego niezbędnego stanu przed rozpoczęciem blokowania ocen funkcji przez menedżera zdarzeń zatrzymania.

Ograniczenie lokalizacji: interfejs API musi być wywoływany ze składnika Monitor (poziom < składnika 100 000).

CancelStepper(DkmRuntimeInstance)

Umożliwia anulowanie kroku po utworzeniu przez kontrolujące wystąpienie środowiska uruchomieniowego. Wystąpienie środowiska uruchomieniowego wywołującego musi być zgodne z bieżącym wystąpieniem środowiska uruchomieniowego kontrolującego. Jest to zwykle używane w scenariuszach przechodzenia między wątkami, w których oryginalny krok może zostać ponownie aktywowany. Menedżer kroków zamknie krok krok i nie wyśle kroku.

Ograniczenie lokalizacji: interfejs API musi być wywoływany ze składnika Monitor (poziom < składnika 100 000).

Close()

Zamyka obiekt stepper. Powinno to zostać zamknięte przez składniki po zakończeniu kroku, takie jak po stłumieniu zdarzenia ukończenia kroku lub jeśli inicjowanie kroku nie powiedzie się. Schodki zostaną niejawnie zamknięte, jeśli ich wątek zostanie zamknięty lub debuger zostanie zatrzymany. Zostaną one zamknięte przez menedżera krokowego, jeśli zostanie wystawione inne żądanie wykonania na poziomie użytkownika.

Obiekty DkmStepper są automatycznie zamykane po zamknięciu skojarzonego obiektu DkmThread.

Create(DkmThread, DkmInstructionAddress, UInt64, DkmStepKind, DkmStepUnit, Guid, DkmSteppingCodePath, DkmStepper, Boolean, ReadOnlyCollection<DkmSteppingCodePath>, String, DkmDataItem)

Obiekty DkmStepper są tworzone przez składniki, które chcą wydać krok. Schodki na poziomie użytkownika są tworzone przez usługę AD7-AL. Aby zainicjować obiekt stepper, należy wywołać funkcję Włącz. Obiekty krokowe będą żyć do momentu ukończenia kroku lub przerwania.

Ten interfejs API został wprowadzony w programie Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

Create(DkmThread, DkmInstructionAddress, UInt64, DkmStepKind, DkmStepUnit, Guid, DkmSteppingCodePath, DkmStepper, DkmDataItem)

Obiekty DkmStepper są tworzone przez składniki, które chcą wydać krok. Schodki na poziomie użytkownika są tworzone przez usługę AD7-AL. Aby zainicjować obiekt stepper, należy wywołać funkcję Włącz. Obiekty krokowe będą żyć do momentu ukończenia kroku lub przerwania.

Enable(Boolean)

Służy do inicjowania obiektu stepper, aby krok został wykonany po następnym wznowieniu wykonywania. Ta metoda jest implementowana przez menedżera krokowego przez znalezienie odpowiedniego monitora debugowania środowiska uruchomieniowego i monitowanie tego monitora debugowania środowiska uruchomieniowego o skonfigurowanie kroku. Ta metoda powinna być wywoływana tylko raz dla danego obiektu stepper.

Ograniczenie lokalizacji: interfejs API musi być wywoływany ze składnika Monitor (poziom < składnika 100 000).

GetControllingRuntimeInstance()

Zwraca wystąpienie środowiska uruchomieniowego aktualnie pod kontrolą tego elementu DkmStepper.

Ograniczenie lokalizacji: interfejs API musi być wywoływany ze składnika Monitor (poziom < składnika 100 000).

GetCrossThreadParent()

Użyj zamiast elementu CrossThreadParent.

Ograniczenie lokalizacji: interfejs API musi być wywoływany ze składnika Monitor (poziom < składnika 100 000).

Ten interfejs API został wprowadzony w programie Visual Studio 16 Update 9 (DkmApiVersion.VS16Update9).

GetDataItem<T>()

Pobiera wystąpienie elementu "T", które zostało dodane do tego wystąpienia kontenera. Jeśli ten kontener nie zawiera wartości "T", ta funkcja zwróci wartość null.

(Odziedziczone po DkmDataContainer)
IsExceptionInFlight()

Pobiera flagę na DkmStepper, która stwierdza, jeśli monitor środowiska uruchomieniowego uważa, że wyjątek jest obecnie w locie w trakcie tego kroku. Może to być używane przez monitory środowiska uruchomieniowego w celu zmiany zachowania krokowego.

Ograniczenie lokalizacji: interfejs API musi być wywoływany ze składnika Monitor (poziom < składnika 100 000).

Ten interfejs API został wprowadzony w programie Visual Studio 11 Update 1 (DkmApiVersion.VS11FeaturePack1).

OnCrossThreadStepArbitration(DkmStepArbitrationReason, DkmRuntimeInstance, DkmThread, DkmInstructionAddress, DkmStepper)

Wywoływana przez monitor środowiska uruchomieniowego, gdy krok jest kontynuowany w innym wątku. Menedżer kroków utworzy nowy krok DkmStepper do użycia w nowym wątku i zainicjuje krok arbitrażowy, aby określić, które środowisko uruchomieniowe powinno wykonać krok tak samo jak OnStepArbitration. Nowy krokowy używa tego samego rodzaju kroków i jednostki kroku co oryginalny krok krokowy. Należy podać nowy adres instrukcji początkowej i jest ustawiony jako adres początkowy kroku. Oryginalny krok krok pozostaje aktywny, a po ukończeniu nowego kroku menedżer wykonywania kroków pominie zdarzenie i powiadomi oryginalny krok krok ukończenia.

Ograniczenie lokalizacji: interfejs API musi być wywoływany ze składnika Monitor (poziom < składnika 100 000).

OnReturnValues(ReadOnlyCollection<DkmRawReturnValue>, Boolean)

Zgłoś zdarzenie ReturnValues. Składniki, które implementują interfejs ujścia zdarzeń, otrzymają powiadomienie o zdarzeniu. Kontrolka zostanie zwrócona po powiadomieniu wszystkich składników.

OnStepArbitration(DkmStepArbitrationReason, DkmRuntimeInstance)

Wywoływana przez monitor środowiska uruchomieniowego, gdy krok opuścił granice tego, co rozumie monitor środowiska uruchomieniowego, lub napotkano potencjalne przejście do innego środowiska uruchomieniowego w trakcie kroku. Menedżer kroków zainicjuje arbitraż krokowy, aby dać każdemu monitorowi środowiska uruchomieniowego szansę na sprawdzenie procesu i określenie, które środowisko uruchomieniowe powinno ukończyć krok. Środowiska uruchomieniowe są wywoływane w kolejności priorytetów. Po zakończeniu tego procesu menedżer krokowy wywoła metodę AfterSteppingArbitration na monitorze, który zażądał arbitrażu, aby mógł odpowiedzieć na nowy monitor kontroli, jeśli został znaleziony, lub zakończy krok, jeśli nie został znaleziony.

Ograniczenie lokalizacji: interfejs API musi być wywoływany ze składnika Monitor (poziom < składnika 100 000).

OnStepComplete(DkmThread, Boolean)

Zgłoś zdarzenie StepComplete. Składniki, które implementują interfejs ujścia zdarzeń, otrzymają powiadomienie o zdarzeniu. Ta metoda spowoduje kolejkowanie zdarzenia, a kontrolka natychmiast powróci do elementu wywołującego.

RemoveDataItem<T>()

Usuń wystąpienie elementu "T" z tego kontenera. Zwykle wywołanie tej metody jest niepotrzebne, ponieważ kontener danych zostanie automatycznie opróżniony po zamknięciu obiektu.

(Odziedziczone po DkmDataContainer)
SetDataItem<T>(DkmDataCreationDisposition, T)

Umieść nowy element w kontenerze danych.

(Odziedziczone po DkmDataContainer)
SetExceptionInFlight(Boolean)

Monitory środowiska uruchomieniowego wywołają tę funkcję, aby ustawić lub wyczyścić flagę na DkmStepper, która może być używana przez współpracujące środowiska uruchomieniowe w celu zmiany zachowania krokowego, jeśli wyjątek jest obecny w locie. Wywoływane przez monitory środowiska uruchomieniowego w przypadku napotkania wyjątku podczas wykonywania kroków.

Ograniczenie lokalizacji: interfejs API musi być wywoływany ze składnika Monitor (poziom < składnika 100 000).

Ten interfejs API został wprowadzony w programie Visual Studio 11 Update 1 (DkmApiVersion.VS11FeaturePack1).

StepControlRequested(DkmStepArbitrationReason, DkmRuntimeInstance)

Element StepControlRequested jest wywoływany, gdy wystąpienie niekontrolujące środowiska uruchomieniowego wykryje, że wątek przeszedł do swojego środowiska uruchomieniowego. Menedżer kroków przekaże wywołanie bieżącego wystąpienia środowiska uruchomieniowego sterującego. Jeśli bieżące kontrolujące wystąpienie środowiska uruchomieniowego może zatrzymać wykonywanie kroków, powinno ono mieć wartość True. Rzeczywista kontrolka nie zostanie podana, dopóki środowisko uruchomieniowe żądające nie wywoła DkmStepper.TakeStepControl. Ten dwuczęściowy proces umożliwia obiektom wywołującym żądanie kontroli wielu schodków w tym samym czasie.

Ograniczenie lokalizacji: interfejs API musi być wywoływany ze składnika Monitor (poziom < składnika 100 000).

TakeStepControl(Boolean, DkmStepArbitrationReason, DkmRuntimeInstance)

Funkcja TakeStepControl jest wywoływana, gdy niekontrolujące wystąpienie środowiska uruchomieniowego wykryje, że wątek osiągnął przejście do jego środowiska uruchomieniowego. Menedżer kroków przekaże wywołanie bieżącego wystąpienia środowiska uruchomieniowego sterującego. Wystąpienie środowiska uruchomieniowego żądającego kontrolki powinno najpierw wywołać metodę StepControlRequested na wszystkich schodkach, do których chce mieć kontrolę. Jeśli wszystkie dla nich ustawiono wartość True, wystąpienie środowiska uruchomieniowego powinno wywołać tę metodę dla każdego kroku, nad którym przejmuje kontrolę.

Ograniczenie lokalizacji: interfejs API musi być wywoływany ze składnika Monitor (poziom < składnika 100 000).

Jawne implementacje interfejsu

IDisposable.Dispose()

Do dodania.

Dotyczy