DkmStepper Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
DkmStepper representa uma solicitação para executar uma etapa de um thread. Ele facilita o tempo de vida do objeto compartilhado entre os vários monitores de depuração de runtime que participam da etapa.
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
- Herança
- Herança
- Atributos
- Implementações
Propriedades
CodePath |
[Opcional] Se StepKind for StepIntoSpecific, especificará em qual chamada estamos entrando. Caso contrário, é NULL. |
CrossThreadParent |
[Opcional] Se um novo steper for criado usando OnCrossThreadStepArbitration, o gerenciador de etapas definirá esse campo para facilitar a volta ao passo original se a etapa de thread cruzado falhar ou precisar de fallback. Preterido. Em vez disso, use GetCrossThreadParent. |
CurrentCodePaths |
[Opcional] Na depuração gerenciada, ela contém todos os caminhos de código no intervalo de etapas atual. Caso contrário, é NULL. Essa API foi introduzida no Visual Studio 12 RTM (DkmApiVersion.VS12RTM). |
CurrentMethodName |
[Opcional] Na depuração gerenciada, ela contém o nome do método atual. Caso contrário, é NULL. Essa API foi introduzida no Visual Studio 12 RTM (DkmApiVersion.VS12RTM). |
FrameBase |
A base de quadro do primeiro quadro no início da etapa. Esse valor será MAXUINT64 se StartingAddress não tiver sido especificado. |
IsUnloaded |
Retornará true se um evento 'descarregado' tiver sido gerado para este objeto (exemplo: DkmThread::Unload for chamado) ou se o objeto tiver sido fechado. Observe que o cuidado deve ser usado ao verificar esse status como, sem sincronização, o status retornado pode não ser mais preciso após a leitura. (Herdado de DkmDataContainer) |
ShouldCaptureReturnValue |
Na depuração gerenciada, indica se o steper queria capturar o valor retornado durante a etapa. O padrão é false. Essa API foi introduzida no Visual Studio 12 RTM (DkmApiVersion.VS12RTM). |
SourceId |
Identifica a origem de um objeto . SourceIds são usados para habilitar a filtragem em cenários quando vários componentes podem estar criando instâncias de uma classe. Por exemplo, as IDs de origem podem ser usadas para determinar se um ponto de interrupção vem do AD7 AL (por exemplo: ponto de interrupção do usuário ou outro ponto de interrupção visível no nível do SDM) em vez de um ponto de interrupção que pode ser criado por outro componente (por exemplo, um ponto de interrupção interno usado para pisar). |
StartingAddress |
[Opcional] O endereço de instrução do processo no momento em que esta etapa foi iniciada. Isso será NULL se a etapa for originada em um thread sem quadros (Script & Somente Gerenciado). |
StepKind |
DkmStepKind descreve como realizar a etapa do thread quando o método Step é chamado. |
StepUnit |
DkmStepUnit descreve a granularidade da etapa quando o método Step é chamado. |
Thread |
DkmThread representa um thread em execução no processo de destino. |
UniqueId |
Guid que identifica exclusivamente esse DkmStepper. |
Métodos
BeforeEnable() |
Chamado pelo gerenciador de eventos de interrupção antes que uma operação de etapa realmente comece O gerenciador de eventos de interrupção notificará todas as instâncias de runtime para que elas possam configurar qualquer estado necessário antes que o gerenciador de eventos de interrupção comece a bloquear avaliações de função. Restrição de local: a API deve ser chamada de um componente Monitor (nível < de componente 100.000). |
CancelStepper(DkmRuntimeInstance) |
Permite que um estepe seja cancelado após a criação pela instância de runtime de controle. A instância de runtime de chamada deve corresponder à instância de runtime de controle atual. Isso geralmente é usado em cenários de etapas entre threads em que o steper original pode ser reativado. O gerenciador de etapas fechará o steper e não enviará a etapa concluída. Restrição de local: a API deve ser chamada de um componente Monitor (nível < de componente 100.000). |
Close() |
Fecha o objeto de estepe. Isso deve ser fechado por componentes quando o steper é feito, como quando um evento de conclusão de etapa é suprimido ou se o steper não é inicializado. Os estepes serão implicitamente fechados se o thread for encerrado ou o depurador for interrompido. Eles serão fechados pelo gerenciador de etapas se uma solicitação de execução no nível do usuário diferente for emitida. Os objetos DkmStepper são fechados automaticamente quando o objeto DkmThread associado é fechado. |
Create(DkmThread, DkmInstructionAddress, UInt64, DkmStepKind, DkmStepUnit, Guid, DkmSteppingCodePath, DkmStepper, Boolean, ReadOnlyCollection<DkmSteppingCodePath>, String, DkmDataItem) |
Os objetos DkmStepper são criados por componentes que desejam emitir uma etapa. Os estepes no nível do usuário são criados pelo AD7-AL. Para inicializar um objeto de estepe, Enable deve ser chamado. Os objetos stepper viverão até que a etapa seja concluída ou anulada. Essa API foi introduzida no Visual Studio 12 RTM (DkmApiVersion.VS12RTM). |
Create(DkmThread, DkmInstructionAddress, UInt64, DkmStepKind, DkmStepUnit, Guid, DkmSteppingCodePath, DkmStepper, DkmDataItem) |
Os objetos DkmStepper são criados por componentes que desejam emitir uma etapa. Os estepes no nível do usuário são criados pelo AD7-AL. Para inicializar um objeto de estepe, Enable deve ser chamado. Os objetos stepper viverão até que a etapa seja concluída ou anulada. |
Enable(Boolean) |
Usado para inicializar um objeto de estepe para que a etapa seja executada quando a execução for retomada. Esse método é implementado pelo gerenciador de etapas localizando um monitor de depuração de runtime apropriado e solicitando que esse monitor de depuração de runtime configure uma etapa. Esse método só deve ser chamado uma vez para um determinado objeto de estepe. Restrição de local: a API deve ser chamada de um componente Monitor (nível < de componente 100.000). |
GetControllingRuntimeInstance() |
Retorna a instância de runtime atualmente no controle deste DkmStepper. Restrição de local: a API deve ser chamada de um componente Monitor (nível < de componente 100.000). |
GetCrossThreadParent() |
Use em vez de CrossThreadParent. Restrição de local: a API deve ser chamada de um componente Monitor (nível < de componente 100.000). Essa API foi introduzida no Visual Studio 16 Atualização 9 (DkmApiVersion.VS16Update9). |
GetDataItem<T>() |
Obtém a instância de 'T' que foi adicionada a essa instância de contêiner. Se esse contêiner não contiver um 'T', essa função retornará nulo. (Herdado de DkmDataContainer) |
IsExceptionInFlight() |
Obtém o sinalizador no DkmStepper que indica se um monitor de runtime acredita que uma exceção está atualmente em voo durante esta etapa. Isso pode ser usado por monitores de runtime para alterar o comportamento da etapa. Restrição de local: a API deve ser chamada de um componente Monitor (nível < de componente 100.000). Essa API foi introduzida no Visual Studio 11 Atualização 1 (DkmApiVersion.VS11FeaturePack1). |
OnCrossThreadStepArbitration(DkmStepArbitrationReason, DkmRuntimeInstance, DkmThread, DkmInstructionAddress, DkmStepper) |
Chamado por um monitor de runtime quando uma etapa continua em um thread diferente. O gerenciador de etapas criará um novo DkmStepper a ser usado no novo thread e iniciará a arbitragem de etapas para determinar qual runtime deve concluir a etapa da mesma forma que OnStepArbitration. O novo estepe usa o mesmo tipo de etapa e unidade de etapa que o estepe original. Um novo endereço de instrução inicial deve ser dado e é definido como o endereço inicial do estepe. O estepe original permanece vivo e quando o novo estepe concluir o gerenciador de etapas suprimirá o evento e notificará o estepe original da conclusão. Restrição de local: a API deve ser chamada de um componente Monitor (nível < de componente 100.000). |
OnReturnValues(ReadOnlyCollection<DkmRawReturnValue>, Boolean) |
Gerar um evento ReturnValues. Os componentes que implementam a interface do coletor de eventos receberão a notificação de evento. O controle retornará depois que todos os componentes forem notificados. |
OnStepArbitration(DkmStepArbitrationReason, DkmRuntimeInstance) |
Chamado por um monitor de runtime quando uma etapa deixou os limites do que o monitor de runtime entende ou uma possível transição para outro runtime foi encontrada durante uma etapa. O gerente de etapas iniciará a arbitragem de etapas para dar a cada monitor de runtime a chance de inspecionar o processo e determinar qual runtime deve concluir a etapa. Os runtimes são chamados em ordem de prioridade. Depois que esse processo for concluído, o gerenciador de etapas chamará AfterSteppingArbitration no monitor que solicitou arbitragem para que ele possa responder ao novo monitor de controle se um tiver sido encontrado ou concluir a etapa se não for encontrado. Restrição de local: a API deve ser chamada de um componente Monitor (nível < de componente 100.000). |
OnStepComplete(DkmThread, Boolean) |
Gerar um evento StepComplete. Os componentes que implementam a interface do coletor de eventos receberão a notificação de evento. Esse método enfileirará o evento e o controle retornará imediatamente ao chamador. |
RemoveDataItem<T>() |
Remova a instância de 'T' desse contêiner. Geralmente, é desnecessário chamar esse método, pois um contêiner de dados será esvaziado automaticamente quando o objeto for fechado. (Herdado de DkmDataContainer) |
SetDataItem<T>(DkmDataCreationDisposition, T) |
Coloque um novo item no contêiner de dados. (Herdado de DkmDataContainer) |
SetExceptionInFlight(Boolean) |
Os monitores de runtime chamam isso para definir ou limpar um sinalizador no DkmStepper que pode ser usado cooperando runtimes para alterar o comportamento de pisar se uma exceção for atual em versão de pré-lançamento. Chamado por monitores de runtime quando uma exceção é encontrada durante a etapa. Restrição de local: a API deve ser chamada de um componente Monitor (nível < de componente 100.000). Essa API foi introduzida no Visual Studio 11 Atualização 1 (DkmApiVersion.VS11FeaturePack1). |
StepControlRequested(DkmStepArbitrationReason, DkmRuntimeInstance) |
StepControlRequested é chamado quando uma instância de runtime não controladora detecta que o thread atingiu uma transição em seu runtime. O gerenciador de etapas encaminhará a chamada para a instância de runtime de controle atual. Se a instância de runtime de controle atual puder parar de percorrer, ela deverá definir Granted como true. O controle real não é dado até que o runtime solicitante chame DkmStepper.TakeStepControl. Esse processo de duas partes permite que os chamadores solicitem o controle de vários steppers ao mesmo tempo. Restrição de local: a API deve ser chamada de um componente monitor (nível < de componente 100.000). |
TakeStepControl(Boolean, DkmStepArbitrationReason, DkmRuntimeInstance) |
TakeStepControl é chamado quando uma instância de runtime não controladora detecta que o thread atingiu uma transição em seu runtime. O gerenciador de etapas encaminhará a chamada para a instância de runtime de controle atual. A instância de runtime que solicita o controle deve primeiro chamar StepControlRequested em todos os steppers dos quais deseja controlar. Se todos definirem Granted como true, a instância de runtime deverá chamar esse método em cada estepe do qual está assumindo o controle. Restrição de local: a API deve ser chamada de um componente monitor (nível < de componente 100.000). |
Implantações explícitas de interface
IDisposable.Dispose() |
A ser adicionado. |