DkmStepper Klasa

Definicja

DkmStepper reprezentuje żądanie kroku wątku. Ułatwia to okres istnienia obiektu współużytkowanego 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
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] Jeśli nowy krok jest tworzony przy użyciu polecenia OnCrossThreadStepArbitration, menedżer kroków ustawi to pole, aby ułatwić powrót do oryginalnego kroku kroków, jeśli krok między wątkami zakończy się niepowodzeniem lub będzie musiał powrócić.

CurrentCodePaths

[Opcjonalnie] W zarządzanym debugowaniu 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 zarządzanym debugowaniu 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ść będzie MAXUINT64, jeśli nie określono elementu StartingAddress.

IsUnloaded

Zwraca wartość true, jeśli dla tego obiektu zostało zgłoszone zdarzenie "zwolniony" (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 zarządzanym debugowaniu wskazuje, czy krokper chciał przechwycić wartość zwracaną podczas wykonywania kroków. Wartość domyślna to fałsz.

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 kroku).

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 kroku wątku po wywołaniu metody kroku.

StepUnit

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

Thread

DkmThread reprezentuje wątek uruchomiony w procesie docelowym.

UniqueId

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

Metody

BeforeEnable()

Wywoływane przez zatrzymanie menedżera zdarzeń przed rozpoczęciem operacji krok faktycznie rozpoczyna zatrzymanie menedżera zdarzeń powiadomi wszystkie wystąpienia środowiska uruchomieniowego, aby umożliwić skonfigurowanie dowolnego stanu niezbędnego przed rozpoczęciem zatrzymywania menedżera zdarzeń rozpoczyna blokowanie ocen funkcji.

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 być zamknięte przez składniki po zakończeniu kroku, na przykład po pominiętym zdarzeniu ukończenia kroku lub jeśli inicjowanie kroku nie powiedzie się. Schodki zostaną niejawnie zamknięte, jeśli ich wątki zakończą się 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 ad7-AL. Aby zainicjować obiekt krokowy, należy wywołać opcję Włącz. Obiekty kroków będą działać 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 ad7-AL. Aby zainicjować obiekt krokowy, należy wywołać opcję Włącz. Obiekty kroków będą działać 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 kroków 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 sterowane tym DkmStepper.

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

GetCrossThreadParent()

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

GetDataItem<T>()

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

(Odziedziczone po DkmDataContainer)
IsExceptionInFlight()

Pobiera flagę na DkmStepper, która stwierdza, czy monitor środowiska uruchomieniowego uważa, że wyjątek jest obecnie w locie w tym kroku. Może to być używane przez monitory środowiska uruchomieniowego w celu zmiany zachowania 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).

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

Wywoływane przez monitor środowiska uruchomieniowego, gdy krok jest kontynuowany w innym wątku. Menedżer kroków utworzy nowy element DkmStepper do użycia w nowym wątku i zainicjuje arbitraż krok po kroku, aby określić, które środowisko uruchomieniowe powinno wykonać krok tak samo jak onStepArbitration. Nowy krokper używa tego samego rodzaju kroków i jednostki kroku co oryginalny krok. Nowy adres instrukcji początkowej musi być podany i jest ustawiony jako adres początkowy kroku. Oryginalny krokper pozostaje żywy, a gdy nowy krokper zakończy działanie menedżera kroków, pominie zdarzenie i powiadomi oryginalny 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ływane przez monitor środowiska uruchomieniowego, gdy krok opuścił granice tego, co monitor środowiska uruchomieniowego rozumie lub potencjalne przejście do innego środowiska uruchomieniowego zostało napotkane podczas kroku. Menedżer kroków zainicjuje arbitraż krok po kroku, aby dać każdemu monitorowi środowiska uruchomieniowego szansę na sprawdzenie procesu i określenie, które środowisko uruchomieniowe powinno zakończyć krok. Środowiska uruchomieniowe są wywoływane w kolejności priorytetu. Po zakończeniu tego procesu menedżer kroków wywoła polecenie 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 w kolejce zdarzenie, a kontrolka natychmiast powróci do elementu wywołującego.

RemoveDataItem<T>()

Usuń wystąpienie "T" z tego kontenera. Zwykle nie trzeba wywoływać tej metody, 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ę w elemencie DkmStepper, który może być używany przez współpracujące środowiska uruchomieniowe w celu zmiany zachowania krokowego, jeśli wyjątek jest obecny w locie. Wywoływane przez środowisko uruchomieniowe jest monitorowane, gdy wystąpi wyjątek 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)

KrokControlRequested jest wywoływany, gdy wystąpienie środowiska uruchomieniowego niekontrolujące wykryje, że wątek osiągnął przejście do środowiska uruchomieniowego. Menedżer kroków przekaże wywołanie bieżącego wystąpienia środowiska uruchomieniowego sterującego. Jeśli bieżące kontrolowanie wystąpienia środowiska uruchomieniowego może przestać wykonywać kroki, powinno ono ustawić wartość Przyznane na true. Rzeczywista kontrolka nie jest podawana, dopóki żądanie środowiska uruchomieniowego wywoła DkmStepper.TakeStepControl. Ten dwuczęściowy proces umożliwia obiektom wywołującym żądanie kontroli wielu schodków jednocześnie.

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 wystąpienie środowiska uruchomieniowego niekontrolujące wykryje, że wątek osiągnął przejście do ś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 we wszystkich schodkach, do których chce mieć kontrolę. Jeśli wszystkie zostały ustawione na 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