Metodo IDataModelScriptDebugStackFrame::GetTransition (dbgmodel.h)
Se un determinato frame dello stack è un punto di transizione determinato dal metodo IsTransition (vedere la documentazione relativa a una definizione di punti di transizione), il metodo GetTransition restituisce informazioni sulla transizione. In particolare, questo metodo restituisce lo script precedente, ovvero quello che ha effettuato una chiamata allo script rappresentato dal segmento stack contenente questo IDataModelScriptDebugStackFrame.
Oltre a restituire l'interfaccia IDataModelScript per lo script precedente, questa chiamata deve eseguire un tentativo di determinare se la transizione è contigua o meno. Una transizione contigua è una posizione in cui uno script/provider chiama direttamente un altro (ignorando qualsiasi codice proxy/stub possa esistere per facilitare la comunicazione tra contesti di script). Una transizione non contigua è una posizione in cui è presente codice intermedio, nativo o un altro script/provider tra cui non è possibile rilevare.
Esempio di uno stack di transizione contiguo (in cui tutte le proprietà sono estensioni nello stesso oggetto):
- [Script1] get firstProperty() { return 42; }
- (Marshalling o codice proxy/stub per la transizione da Script2 a Script1)
- [Script2] get secondProperty() { return this.firstProperty(); }
Un esempio di stack di transizione non contiguo (in cui tutte le proprietà sono estensioni nello stesso oggetto) in cui si immaginano due provider di script diversi, uno JavaScript e un Python:
- (JavaScript) [Script1] get firstProperty() { return 42; }
- (Marshalling o codice proxy/stub per la transizione da IntermediateScript a Script1)
- (Python) [IntermediateScript get intermediateProperty() { return this.firstProperty; }
- (Marshalling o codice proxy/stub per la transizione da Script2 a IntermediateScript
- (JavaScript) [Script2] get secondProperty() { return this.intermediateProperty; }
Nel secondo caso, è completamente possibile che il debugger per il debugger JavaScript immaginato possa visualizzare il primoProperty e ottenere la secondaProperty senza visibilità in modo intermedioProperty perché è un provider di script completamente diverso (un python immaginato qui). Il debugger dello script può indicare nel metodo GetTransition che la transizione è stata da Script1 a Script2 come transizione non contigua.
Se l'interfaccia di debug generale è in grado di unire le informazioni per la parte Python immaginata, lo farà. Il provider JavaScript immaginato indica semplicemente la discontinuità.
Sintassi
HRESULT GetTransition(
IDataModelScript **transitionScript,
bool *isTransitionContiguous
);
Parametri
transitionScript
Il debugger restituisce qui lo script precedente. Lo script precedente è quello che ha chiamato nello script rappresentato dal segmento stack contenente questo IDataModelStackDebugFrame.
isTransitionContiguous
Indicazione del fatto che la transizione sia contigua o meno venga restituita qui.
Valore restituito
Questo metodo restituisce HRESULT che indica l'esito positivo o l'errore.
Requisiti
Requisito | Valore |
---|---|
Intestazione | dbgmodel.h |