Sdílet prostřednictvím


DkmGPUComputeThread Třída

Definice

DkmGPUComputeThread představuje výpočetní vlákno spuštěné v cílovém procesu GPU.

public ref class DkmGPUComputeThread : Microsoft::VisualStudio::Debugger::DkmThread
[System.Runtime.InteropServices.Guid("40cbb26d-05f5-dc30-49f9-797b17f2ab9e")]
public class DkmGPUComputeThread : Microsoft.VisualStudio.Debugger.DkmThread
[<System.Runtime.InteropServices.Guid("40cbb26d-05f5-dc30-49f9-797b17f2ab9e")>]
type DkmGPUComputeThread = class
    inherit DkmThread
Public Class DkmGPUComputeThread
Inherits DkmThread
Dědičnost
Dědičnost
DkmGPUComputeThread
Atributy

Vlastnosti

ComputeKernel

DkmGPUComputeKernel představuje výpočetní jádro GPU spuštěné v cílovém procesu.

Connection

To představuje připojení mezi monitorováním a integrovaným vývojovém prostředím. Může se jednat o místní připojení, pokud monitorování běží ve stejném procesu jako integrované vývojové prostředí (IDE), nebo může být vzdálené připojení. V procesu monitorování existuje pouze jedno připojení.

(Zděděno od DkmThread)
GlobalThreadIndex

Jedinečný pro index výpočetních vláken jádra.

IsMainThread

Hodnota True, pokud se jedná o hlavní vlákno tohoto procesu. Hlavní vlákno je první vlákno, které se má spustit.

(Zděděno od DkmThread)
IsUnloaded

Vrátí hodnotu true, pokud byla pro tento objekt vyvolána událost unloaded (příklad: DkmThread::Unload je volána) nebo pokud byl objekt uzavřen. Mějte na paměti, že při kontrole tohoto stavu je potřeba střídmět, protože bez synchronizace nemusí být vrácený stav po přečtení přesný.

(Zděděno od DkmDataContainer)
NativeStartAddress

Pokud je k dispozici, jedná se o počáteční adresu Win32 tohoto vlákna (hodnota předaná rozhraní CreateThread API). Hodnota nebude vždy k dispozici, například obecně není k dispozici ve scénářích, kde bylo vlákno spuštěno po připojení ladicího programu, nebo v minidumps.

(Zděděno od DkmThread)
NativeThread

[Volitelné] Nativní vlákno, ve kterém je vyvolána výjimka, která informuje ladicí program, že je k dispozici událost ladění GPU.

Toto rozhraní API bylo zavedeno v sadě Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

Process

DkmProcess představuje cílový proces, který se ladí. Ladicí program ladí procesy, takže se jedná o základní jednotku ladění. DkmProcess může představovat systémový proces nebo virtuální proces, například minidumps.

(Zděděno od DkmThread)
SystemInformation

Obsahuje informace o systému počítače, ve kterém je spuštěné toto vlákno. Pokud toto vlákno běží pod wow (32bitová emulace v 64bitovém operačním systému), budou tyto informace pro 32bitový subsystém, nikoli pro 64bitový subsystém.

(Zděděno od DkmThread)
SystemPart

[Volitelné] Popisuje vlastnosti vlákna, které jsou relevantní pro úplné vlákno Win32. V současné době je tato hodnota povinná a všechna vlákna budou mít blok System. V budoucnu může být tato hodnota NULL, pokud DkmThread představuje něco jiného než úplné vlákno Win32.

(Zděděno od DkmThread)
TebAddress

Adresa v rámci cílového procesu, kde je uložený blok prostředí podprocesu Win32. Další informace najdete v dokumentaci ke struktuře TEB na webu MSDN.

(Zděděno od DkmThread)
UniqueId

Identifikátor GUID, který jednoznačně identifikuje tento objekt vlákna.

(Zděděno od DkmThread)

Metody

BeginFuncEvalExecution(DkmFuncEvalFlags)

Tato metoda se používá k obnovení cílového procesu, aby mohlo dojít k vyhodnocení funkce. Tato funkce je volána monitorováním ladění modulu runtime po nastavení vyhodnocení funkce, aby se spustil cílový proces. Monitorování modulu runtime nejprve aktualizuje kontext vlákna, aktualizuje veškerou potřebnou paměť v cílovém procesu a nastaví jakoukoli detekci dokončení vyhodnocení funkce.

Volající této metody MUSÍ vždy volat EndFuncEvalExecution před návratem z operace, která aktivovala vyhodnocení funkce. Chování není definováno, pokud se volajícímu nepodaří.

Tato metoda se implementuje v monitorování základního ladění tak, že nejprve aktualizuje cílový proces tak, aby byl v režimu vyhodnocení funkce (DkmThread.OnBeginFuncEvalExecution), pak se pozastaví nebo znovu spustí vlákna podle příznaků vyhodnocení funkce a nakonec pokračuje v cílovém procesu.

Tuto metodu lze volat z libovolného vlákna, ale OnBeginFuncEvalExecution musí být volána z zastavování vlákna, takže základní ladicí monitorování může být nutné provést jako přepínač vlákna v rámci implementace této metody. Základní monitorování ladění by se nemělo vrátit z BeginFuncEvalExecution, dokud se cíl neobnoví.

(Zděděno od DkmThread)
CanBeginFuncEvalExecution(DkmFuncEvalFlags)

CanBeginFuncEvalExecution lze volat, abyste pochopili, jestli aktuální stav procesu umožňuje vyhodnocení funkcí. To vrátí hodnotu false, například pokud základní DM má název StoppingEventProcessingBegin, ale ne StoppingEventProcessingContinue.

Omezení umístění: Rozhraní API se musí volat z komponenty monitoru (úroveň < komponenty 100 000).

Toto rozhraní API bylo zavedeno v sadě Visual Studio 16 Update 5 (DkmApiVersion.VS16Update5).

(Zděděno od DkmThread)
Create(DkmProcess, UInt64, Boolean, Int64, DkmGPUComputeKernel, DkmThread, DkmThread+System, DkmDataItem)

Create novou instanci objektu DkmGPUComputeThread.

Omezení umístění: Rozhraní API se musí volat z komponenty Monitor (úroveň < komponenty 100 000).

Toto rozhraní API bylo zavedeno v sadě Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

Create(DkmProcess, UInt64, Boolean, Int64, DkmGPUComputeKernel, DkmThread+System, DkmDataItem)

Create novou instanci objektu DkmGPUComputeThread.

Omezení umístění: Rozhraní API se musí volat z komponenty Monitor (úroveň < komponenty 100 000).

CreateFrameRegisters(DkmUnwoundRegister[], UInt32)

Převeďte pole DkmUnwoundRegisters na instanci DkmFrameRegisters obsahující seřazenou DkmReadOnlyCollection DkmUnwoundRegisters.

(Zděděno od DkmThread)
CreateRegistersObject(Byte[], DkmUnwoundRegister[], DkmUnwoundRegister[])

Vytvoří objekt DkmFrameRegisters ze zadaného pole bajtů obsahující strukturu kontextu Win32.

(Zděděno od DkmThread)
EndFuncEvalExecution(DkmFuncEvalFlags)

EndFuncEvalExecution je volán monitorováním ladění modulu runtime ve vlákně událostí za účelem ukončení režimu vyhodnocení funkce. EndFuncEvalExecution aktualizuje interní stav objektu DkmProcess tak, aby indikoval, že vyhodnocení funkce bylo ukončeno. Tím se také odešle událost FuncEvalEnded a proces se označí jako zastavený.

Tuto metodu lze volat (1) při zpracování "přijatého" zastavovacího oznámení události nebo (2) při zpracování nezastavovací události, jako je ukončení vlákna, -nebo (3), zatímco cíl je stále zastaven, například pokud se nastavení vyhodnocení funkce nezdařilo.

(Zděděno od DkmThread)
GetContext(Int32, Byte[])

Získejte aktuální kontext (hodnoty registru) vlákna.

(Zděděno od DkmThread)
GetContext(Int32, Void*, Int32)

Získejte aktuální kontext (hodnoty registru) vlákna.

(Zděděno od DkmThread)
GetCurrentFrameInfo(UInt64, UInt64, UInt64)

GetCurrentFrameInfo se používá k získání základního rámce a návratové adresy pro aktuální kontext vlákna. To bere v úvahu vynechání ukazatele rámce a pokud je aktuální ukazatel instrukce v prologu, epilogu atd. POZNÁMKA: V některých případech dojde k chybě, pokud má snímek vynechání ukazatele rámce a nejsou načteny žádné symboly.

Omezení umístění: Rozhraní API se musí volat z komponenty monitoru (úroveň < komponenty 100 000).

(Zděděno od DkmThread)
GetCurrentFuncEvalMode()

GetCurrentFuncEvalMode může být volána komponentami jako součást zpracování událostí, aby se zjistilo, jestli je povolené vyhodnocení funkce. Tuto funkci lze volat pouze jako součást zpracování událostí.

(Zděděno od DkmThread)
GetCurrentLocation(DkmWorkList, DkmCompletionRoutine<DkmGetCurrentLocationAsyncResult>)

Poskytuje umístění vlákna, jak je vidět v okně vláken, nebo rozevírací seznam vláken na panelu nástrojů umístění ladění.

Tato metoda přidá novou pracovní položku do zadaného pracovního seznamu a vrátí po připojení pracovní položky. Skutečné zpracování pracovní položky je asynchronní. Volající bude upozorněn, že žádost je dokončena prostřednictvím rutiny dokončení.

Omezení umístění: Rozhraní API se musí volat z komponenty IDE (úroveň > komponenty 100 000).

(Zděděno od DkmThread)
GetCurrentRegisters(DkmUnwoundRegister[])

Vrátí objekt DkmFrameRegisters obsahující hodnoty aktuálního registru vlákna.

(Zděděno od DkmThread)
GetDataItem<T>()

Získá instanci T, která byla přidána do této instance kontejneru. Pokud tento kontejner neobsahuje "T", vrátí tato funkce hodnotu null.

(Zděděno od DkmDataContainer)
GetDebuggerSuspensionCount()

Vrátí celkový počet pozastavení způsobených ladicím programem (tj. volání DkmThread::Suspend bez volání DkmThread::Resume). Tím se vyloučí všechna pozastavení mimo ladicí program.

(Zděděno od DkmThread)
GetExtendedRegisters()

Získá rozšířené registry z kontextu vlákna.

(Zděděno od DkmThread)
GetGroupId(Int32[], Int32)

Získejte rozměr bloku vlákna.

GetManagedThreadProperties(DkmWorkList, DkmCompletionRoutine<DkmGetManagedThreadPropertiesAsyncResult>)

Získejte vlastnosti spravovaného vlákna.

Tato metoda přidá novou pracovní položku do zadaného pracovního seznamu a vrátí po připojení pracovní položky. Skutečné zpracování pracovní položky je asynchronní. Volající bude upozorněn, že žádost je dokončena prostřednictvím rutiny dokončení.

(Zděděno od DkmThread)
GetManagedThreadProperties(Int32)

Získejte vlastnosti spravovaného vlákna.

(Zděděno od DkmThread)
GetMinidumpThreadInfo(DkmMinidumpThreadInfo)

Získá informace o stavu vlákna uložené v minidump.

Toto rozhraní API bylo zavedeno v sadě Visual Studio 17 RTM (DkmApiVersion.VS17RTM).

(Zděděno od DkmThread)
GetRegisterDescriptions()

Získejte seznam popisů všech registrů z výpočetního vlákna GPU.

GetStackAddressRange()

Načte limit zásobníku nebo základ zásobníku daného vlákna. Všimněte si, že je možné, aby se tato hodnota v průběhu času měnil, například v případě vláken.

(Zděděno od DkmThread)
GetSteppers()

GetSteppers vytvoří výčet prvků DkmStepper tohoto objektu DkmThread.

(Zděděno od DkmThread)
GetSuspensionCount(Boolean)

Vrátí aktuální počet pozastavení tohoto vlákna.

(Zděděno od DkmThread)
GetSuspensionCount(DkmWorkList, Boolean, DkmCompletionRoutine<DkmGetSuspensionCountAsyncResult>)

Vrátí aktuální počet pozastavení tohoto vlákna.

Tato metoda přidá novou pracovní položku do zadaného pracovního seznamu a vrátí po připojení pracovní položky. Skutečné zpracování pracovní položky je asynchronní. Volající bude upozorněn, že žádost je dokončena prostřednictvím rutiny dokončení.

(Zděděno od DkmThread)
GetThisGroupDimension(Int32[], Int32)

Získejte rozměr bloku vlákna.

GetThisThreadDimension(Int32[], Int32)

Získejte rozměr bloku vlákna.

GetThreadCurrentWinRtErrorInfo()

GetThreadCurrentWinRtErrorInfo se používá k získání adresy aktuálního objektu IErrorInfo pro toto vlákno.

Toto rozhraní API bylo zavedeno v sadě Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

(Zděděno od DkmThread)
GetThreadId(Int32[], Int32)

Získejte rozměr bloku vlákna.

GetTlsValue(Int32)

Načte hodnotu ve slotu místního úložiště vlákna (TLS) ladicího vlákna pro zadaný index PROTOKOLU TLS. Každé vlákno procesu má svůj vlastní slot pro každý index TLS.

(Zděděno od DkmThread)
GetTopStackFrame()

Vrátí horní rámec zásobníku volání pro vlákno. Tato hodnota se obvykle ukládá do mezipaměti po prvním procházení zásobníku a při pokračování se vymaže. Toto je možné volat pouze nad poskytovatelem zásobníku v klientském procesu. Pokud chcete získat horní rámec v procesu serveru, zavolejte GetTopStackWalkFrame.

Omezení umístění: Rozhraní API se musí volat z komponenty IDE (úroveň > komponenty 100 000).

(Zděděno od DkmThread)
GetTopStackWalkFrame(DkmRuntimeInstance)

Vraťte horní rámeček zásobníku pro vlákno. Tento rámec může pocházet z instance modulu runtime nebo z odvíječe monitoru. Tuto možnost lze volat pouze z procesu serveru. Pokud chcete získat horní rámec v procesu klienta, použijte GetTopStackFrame.

Omezení umístění: Rozhraní API se musí volat z komponenty monitoru (úroveň < komponenty 100 000).

(Zděděno od DkmThread)
GetVolatileFlags()

Získejte nestálé příznaky vlákna. Pokud je vlákno například naplánovaným vláknem v uživatelském režimu.

(Zděděno od DkmThread)
GetVolatileFlags(DkmWorkList, DkmCompletionRoutine<DkmGetVolatileFlagsAsyncResult>)

Získejte nestálé příznaky vlákna. Pokud je vlákno například naplánovaným vláknem v uživatelském režimu.

Tato metoda přidá novou pracovní položku do zadaného pracovního seznamu a vrátí po připojení pracovní položky. Skutečné zpracování pracovní položky je asynchronní. Volající bude upozorněn, že žádost je dokončena prostřednictvím rutiny dokončení.

(Zděděno od DkmThread)
GetVolatileProperties(DkmWorkList, DkmCompletionRoutine<DkmGetVolatilePropertiesAsyncResult>)

Získání dynamických vlastností vlákna

Tato metoda přidá novou pracovní položku do zadaného pracovního seznamu a vrátí po připojení pracovní položky. Skutečné zpracování pracovní položky je asynchronní. Volající obdrží oznámení o dokončení žádosti prostřednictvím rutiny dokončení.

(Zděděno od DkmThread)
GetVolatileProperties(Int32, UInt64)

Získá dynamické vlastnosti vlákna.

(Zděděno od DkmThread)
IsStoppingEventQueued(Boolean)

Určuje, jestli má dané vlákno ve frontě událost zastavení. Tyto informace používá správce provádění k rozhodnutí, zda vlákno může být vysunutí.

(Zděděno od DkmThread)
OnBeginFuncEvalExecution(DkmFuncEvalFlags)

OnBeginFuncEvalExecution je volána základní ladicí monitor ve vlákně události. Tato metoda je volána jako součást implementace IDkmBaseFuncEvalService.BeginFuncEvalExecution, která je volána k obnovení procesu vyhodnocení funkce. OnBeginFuncEvalExecution aktualizuje interní stav objektu DkmProcess, aby indikuje, že probíhá vyhodnocení funkce. Tím se také odešle událost FuncEvalStarting a označí se proces jako spuštěný, takže nebudou povoleny žádné operace, které vyžadují zastavený proces.

(Zděděno od DkmThread)
OnContinueExecution()

OnContinueExecution je volána základním monitorováním ladění ve vlákně události. Tato metoda je volána jako součást implementace IDkmContinueExecution.ContinueExecution, což je to, co používá integrované vývojové prostředí k pokračování v cílovém procesu. Tuto metodu používá dispečer buď k odeslání zastavovací události, které nebylo možné zpracovat dříve, nebo k aktualizaci interního stavu objektu DkmProcess, aby bylo možné označit, že cílový proces je nyní spuštěn. Před označením procesu jako spuštěného odešle dispečer událost Continue.

Základní monitorování ladění by mělo být očekáváno, že bude opakovaně volána, dokud je v této metodě.

(Zděděno od DkmThread)
OnEmbeddedBreakpointHit(DkmInstructionAddress, Boolean)

Vyvolání EmbeddedBreakpointHit události Součásti, které implementují rozhraní jímky událostí, obdrží oznámení o události. Tato metoda zařadí událost do fronty a ovládací prvek se okamžitě vrátí volajícímu.

(Zděděno od DkmThread)
OnInterceptExceptionCompleted(UInt64)

Vytvořte InterceptExceptionCompleted událost. Součásti, které implementují rozhraní jímky událostí, obdrží oznámení o události. Tato metoda zařadí událost do fronty a ovládací prvek se okamžitě vrátí volajícímu.

(Zděděno od DkmThread)
OnThreadNameChange()

ThreadNameChange je odeslán dispečer, když DkmThread::NameChange je vyvolána monitorováním.

Toto rozhraní API bylo zavedeno v sadě Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

(Zděděno od DkmThread)
RaiseExecutionControlException(UInt32)

Rozhraní API, které může být volána z implementace IDkmSingleStepCompleteReceived nebo IDkmRuntimeBreakpointReceived, aby se při obnovení provádění základního dm aktivovala EXCEPTION_BREAKPOINT nebo EXCEPTION_SINGLE_STEP výjimka v cílovém procesu. Za normálních okolností je zarážka nebo výjimka v jednom kroku implicitně potlačena. To umožňuje, aby EXCEPTION_BREAKPOINT/EXCEPTION_SINGLE_STEP zpracovávaly obslužné rutiny výjimek v rámci cílového procesu. Toto rozhraní API selže, pokud vlákno není aktuálně u události dokončení kroku nebo zarážky.

Omezení umístění: Rozhraní API se musí volat z komponenty Monitor (úroveň < komponenty 100 000).

(Zděděno od DkmThread)
ReadMemory(UInt64, UInt64, DkmReadMemoryFlags, Byte[])

Načtěte paměť cílového procesu GPU. Metoda je na DkmGPUComputeThread, protože může číst místní paměť vlákna, sdílenou paměť skupiny nebo globální paměť.

ReadMemory(UInt64, UInt64, DkmReadMemoryFlags, Void*, Int32)

Načtěte paměť cílového procesu GPU. Metoda je na DkmGPUComputeThread, protože může číst místní paměť vlákna, sdílenou paměť skupiny nebo globální paměť.

RemoveDataItem<T>()

Odeberte z tohoto kontejneru instanci T. Obvykle není nutné volat tuto metodu, protože kontejner dat se automaticky vyprázdní při zavření objektu.

(Zděděno od DkmDataContainer)
Resume(Boolean)

Pokračovat v tomto vlákně.

(Zděděno od DkmThread)
SetContext(Byte[])

Aktualizujte kontext (hodnoty registru) vlákna.

(Zděděno od DkmThread)
SetDataItem<T>(DkmDataCreationDisposition, T)

Do kontejneru dat umístěte novou položku.

(Zděděno od DkmDataContainer)
SetExtendedRegisterValue(Int32, ReadOnlyCollection<Byte>)

Nastaví hodnotu rozšířeného registru v kontextu vlákna.

(Zděděno od DkmThread)
SetRegisterValue(DkmGPURegisterDescription, ReadOnlyCollection<Byte>)

Nastavte hodnotu registru ve výpočetním vlákně GPU.

SetTlsValue(Int32, UInt64)

Uloží hodnotu v slotu místního úložiště vláken (TLS) ladicího vlákna pro zadaný index TLS. Každé vlákno procesu má vlastní slot pro každý index TLS.

(Zděděno od DkmThread)
Suspend(Boolean)

Pozastavit toto vlákno.

(Zděděno od DkmThread)
Unload(Int32)

ThreadExit je odeslán dispečer, když DkmThread::Unload je vyvolána monitorem.

Tuto metodu může volat pouze komponenta, která objekt vytvořila.

(Zděděno od DkmThread)
UpdateBufferTag(UInt32)

Zkontroluje, jestli se pro toto spuštění jádra přeposlala značka vyrovnávací paměti.

ValidateAddress(UInt64)

Ověřte zadanou adresu paměti GPU.

WriteMemory(UInt64, UInt64, Byte[])

Zapíše paměť do cílového procesu GPU. Metoda je na DkmGPUComputeThread, protože může zapisovat vlákno místní paměť, sdílenou paměť skupiny nebo globální paměť.

Platí pro