Método IDataModelScriptDebugStackFrame::GetTransition (dbgmodel.h)
Se um determinado quadro de pilha for um ponto de transição conforme determinado pelo método IsTransition (consulte a documentação de uma definição de pontos de transição), o método GetTransition retornará informações sobre a transição. Em particular, esse método retorna o script anterior , aquele que fez uma chamada para o script representado pelo segmento de pilha que contém esse IDataModelScriptDebugStackFrame.
Além de retornar a interface IDataModelScript para o script anterior, espera-se que essa chamada tente determinar se a transição é contígua ou não. Uma transição contígua é aquela em que um script/provedor chamou diretamente outro (ignorando qualquer código proxy/stub que possa existir para facilitar a comunicação entre contextos de script). Uma transição não contígua é aquela em que há um código intermediário -- nativo ou outro script/provedor que não pode ser detectado -- no meio.
Um exemplo de uma pilha de transição contígua (em que todas as propriedades são extensões no mesmo objeto):
- [Script1] get firstProperty() { return 42; }
- (Marshaling ou proxy/stub code to transition from Script2 to Script1)
- [Script2] get secondProperty() { return this.firstProperty(); }
Um exemplo de uma pilha de transição não contígua (em que todas as propriedades são extensões no mesmo objeto) em que imaginamos dois provedores de script diferentes: um JavaScript e um Python:
- (JavaScript) [Script1] get firstProperty() { return 42; }
- (Marshaling ou proxy/stub code to transition from IntermediateScript to Script1)
- (Python) [IntermediateScript get intermediateProperty() { return this.firstProperty; }
- (Marshaling ou proxy/stub code to transition from Script2 to IntermediateScript
- (JavaScript) [Script2] get secondProperty() { return this.intermediateProperty; }
No segundo caso, é inteiramente possível que o depurador para o depurador JavaScript imaginado possa ver get firstProperty e get secondProperty sem visibilidade para obter intermediateProperty porque ele é um provedor de script totalmente diferente (um Python imaginado aqui). O depurador de script pode indicar no método GetTransition que a transição foi de Script1 para Script2 como uma transição não contígua.
Se a interface de depuração geral for capaz de unir informações para a parte do Python imaginada, ela o fará. O provedor JavaScript imaginado simplesmente indica a descontinuidade.
Sintaxe
HRESULT GetTransition(
IDataModelScript **transitionScript,
bool *isTransitionContiguous
);
Parâmetros
transitionScript
O depurador retorna o script anterior aqui. O script anterior é aquele chamado para o script representado pelo segmento de pilha que contém esse IDataModelStackDebugFrame.
isTransitionContiguous
Uma indicação de se a transição é contígua ou não é retornada aqui.
Valor de retorno
Esse método retorna HRESULT que indica êxito ou falha.
Requisitos
Requisito | Valor |
---|---|
cabeçalho | dbgmodel.h |