Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Aggiornamento: novembre 2007
L'API di analisi fornisce due modalità per ottenere gli stack di chiamate: un metodo basato sullo snapshot dello stack, che consente la raccolta di tipo sparse degli stack di chiamate, e un metodo basato sullo shadow stack, che registra lo stack di chiamate in ogni istante. Nel presente argomento viene illustrata una panoramica dei due metodi.
Snapshot dello stack
Uno snapshot dello stack è un'analisi dello stack di un thread in un istante di tempo. L'API di analisi supporta l'analisi di funzioni gestite nello stack, ma lascia l'analisi delle funzioni non gestite alla funzione di verifica del percorso chiamate nello stack del profiler.
Per ulteriori informazioni sulla programmazione del profiler per verificare il percorso chiamate negli stack gestiti, vedere il metodo ICorProfilerInfo2::DoStackSnapshot nell’ambito della presente documentazione e Profiler Stack Walking in the .NET Framework 2.0: Basics and Beyond in MSDN Library (informazioni in lingua inglese).
Shadow stack
Un utilizzo troppo frequente del metodo basato sullo snapshot può creare rapidamente un problema di prestazioni. Se si desidera eseguire frequenti analisi dello stack, il profiler deve compilare uno shadow stack utilizzando i callback di eccezione FunctionEnter2, FunctionLeave2, FunctionTailcall2e ICorProfilerCallback2. Lo shadow stack è sempre aggiornato e può essere rapidamente copiato in un’area di archiviazione quando è necessario uno snapshot dello stack.
Uno shadow stack può ottenere argomenti della funzione, valori restituiti e informazioni sulle creazioni di istanze generiche. Queste informazioni sono disponibili solo tramite lo shadow stack e possono essere ottenute quando il controllo viene passato a una funzione. Tuttavia, queste informazioni potrebbero non essere disponibili in un secondo momento, durante l’esecuzione della funzione.
Vedere anche
Riferimenti
Metodo ICorProfilerInfo2::SetEnterLeaveFunctionHooks2