Esempio di ispezione dello stack frame
Aggiornamento: novembre 2007
In questo esempio viene illustrato come recuperare a livello di codice informazioni sullo stack di chiamate da qualsiasi punto del codice in esecuzione. Lo stack consente di determinare la sequenza delle routine che l'applicazione ha eseguito prima di arrivare alla routine corrente.
Per ottenere esempi e istruzioni per la relativa installazione
Effettuare una delle seguenti operazioni:
Dal menu Guida, scegliere Esempi.
Il file Readme contiene informazioni sugli esempi.
Visitare il sito Web Visual Studio 2008 Samples (informazioni in lingua inglese). Su tale sito sono disponibili le versioni più recenti degli esempi.
Individuare gli esempi sul computer in cui è installato Visual Studio. Il percorso di installazione predefinito degli esempi e del file Readme relativo è unità:\Programmi\Microsoft Visual Studio 9.0\Samples\lcid. Per le versioni Express di Visual Studio tutti gli esempi sono disponibili in linea.
Per ulteriori informazioni, vedere Individuazione dei file di esempio.
Nota sulla sicurezza: |
---|
In questo esempio di codice viene illustrato un concetto e viene presentato solo il codice rilevante. È possibile che questo esempio non soddisfi i requisiti di sicurezza per un ambiente specifico ed è opportuno non utilizzarlo così come viene riportato. È consigliabile aggiungere codice relativo alla sicurezza e alla gestione degli errori per rendere i progetti più sicuri e potenti. Microsoft fornisce questo esempio di codice "COSÌ COM'È" senza garanzie. |
Per eseguire l'esempio
- Premere F5.
Dimostrazione
In .NET Framework la funzionalità è inclusa nella classe StackFrame. Nell'esempio vengono illustrate altre due classi: StackTrace e MethodInfo. Il costruttore senza parametri di StackTrace restituisce un insieme completo di oggetti StackFrame, fornendo informazioni dal momento di avvio dell'applicazione. È inoltre possibile utilizzare il costruttore StackTrace che accetta un'istanza di Exception. Questo costruttore fornisce informazioni di analisi dello stack al codice che ha generato l'eccezione.
Il gestore eventi per il pulsante Test Procedure Stack contiene il codice per chiamare diversi metodi, creando uno stack di vari livelli. Se si fa clic sul pulsante Test Procedure Stack viene chiamata ProcA, che chiama ProcB. ProcB chiama la routine GetFullStackFrameInfo, passando un nuovo oggetto StackTrace:
GetFullStackFrameInfo(New StackTrace())
Nella routine GetFullStackFrameInfo il codice utilizza la proprietà FrameCount dell'oggetto StackTrace per recuperare il numero totale di stack frame dalla routine corrente. La routine aggiunge quindi informazioni su ogni stack frame nella casella di riepilogo dell'esempio, chiamando il metodo GetFrame per recuperare un oggetto stack frame indicizzato.
La routine GetStackFrameInfo chiama il metodo GetFrame sull'oggetto StackFrame passato dal codice, quindi recupera le proprietà dell'oggetto MethodInfo per visualizzare informazioni sulla routine nella casella di riepilogo.
Il gestore eventi del pulsante Test Exception Handling genera un errore a vari livelli di profondità dello stack. Il codice genera un'eccezione e la passa al costruttore dell'oggetto StackFrame.