Questa pagina è stata utile?
I suggerimenti relativi al contenuto di questa pagina sono importanti. Comunicaceli.
Altri suggerimenti?
1500 caratteri rimanenti
Esporta (0) Stampa
Espandi tutto
Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale

Classe StackTrace

Rappresenta una traccia dello stack, che è una raccolta ordinata di uno o più stack frame.

System.Object
  System.Diagnostics.StackTrace

Spazio dei nomi:  System.Diagnostics
Assembly:  mscorlib (in mscorlib.dll)

[SerializableAttribute]
[ComVisibleAttribute(true)]
[SecurityPermissionAttribute(SecurityAction.InheritanceDemand, UnmanagedCode = true)]
public class StackTrace

Il tipo StackTrace espone i seguenti membri.

  NomeDescrizione
Metodo pubblicoStackTrace()Inizializza una nuova istanza di StackTrace classe dal frame del chiamante.
Metodo pubblicoStackTrace(Boolean)Inizializza una nuova istanza di StackTrace classe dal frame del chiamante, facoltativamente acquisente informazioni di origine.
Metodo pubblicoStackTrace(Exception)Inizializza una nuova istanza di StackTrace classe utilizzando l'oggetto eccezione fornito.
Metodo pubblicoStackTrace(Int32)Inizializza una nuova istanza di StackTrace classe dal frame del chiamante, ignorando il numero specificato di frame.
Metodo pubblicoStackTrace(StackFrame)Inizializza una nuova istanza di StackTrace classe che contiene un singolo frame.
Metodo pubblicoStackTrace(Exception, Boolean)Inizializza una nuova istanza di StackTrace classe, utilizzando l'oggetto eccezione fornito e facoltativamente di acquisire informazioni di origine.
Metodo pubblicoStackTrace(Exception, Int32)Inizializza una nuova istanza di StackTrace classe utilizzando l'oggetto eccezione fornito e di ignorare il numero specificato di frame.
Metodo pubblicoStackTrace(Int32, Boolean)Inizializza una nuova istanza di StackTrace classe dal frame del chiamante, ignorando il numero specificato dei frame e facoltativamente acquisente informazioni di origine.
Metodo pubblicoStackTrace(Thread, Boolean) Obsoleta. Inizializza una nuova istanza di StackTrace una classe per un thread specifico, facoltativamente acquisisce le informazioni di origine. Non utilizzare questo overload del costruttore.
Metodo pubblicoStackTrace(Exception, Int32, Boolean)Inizializza una nuova istanza di StackTrace classe utilizzando l'oggetto eccezione fornito, ignorando il numero specificato dei frame e facoltativamente acquisente informazioni di origine.
In alto

  NomeDescrizione
Proprietà pubblicaFrameCountOttiene il numero di frame nella traccia dello stack.
In alto

  NomeDescrizione
Metodo pubblicoEquals(Object) Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object)
Metodo protettoFinalize Consente a un oggetto di provare a liberare risorse ed eseguire altre operazioni di pulizia prima che l'oggetto stesso venga reclamato dalla procedura di Garbage Collection. (Ereditato da Object)
Metodo pubblicoGetFrameottiene lo stack frame specificato.
Metodo pubblicoGetFramesRestituisce una copia di tutti gli stack frame tracciatura dello stack corrente.
Metodo pubblicoGetHashCode Funge da funzione hash per un particolare tipo. (Ereditato da Object)
Metodo pubblicoGetType Ottiene il Type dell'istanza corrente. (Ereditato da Object)
Metodo protettoMemberwiseClone Crea una copia dei riferimenti dell'oggetto Object corrente. (Ereditato da Object)
Metodo pubblicoToStringCompila una rappresentazione leggibile analisi dello stack. (Esegue l'override di Object.ToString()).
In alto

  NomeDescrizione
Campo pubblicoMembro staticoMETHODS_TO_SKIPDefinisce il valore predefinito per il numero di metodi per omettere dall'analisi dello stack. Questo campo è costante.
In alto

StackTrace le informazioni verranno più teoriche con le configurazioni di compilazione di debug. Per impostazione predefinita, le build di debug include i simboli di debug, mentre le build di rilascio non fanno. I simboli di debug contengono la maggior parte del file, il nome del metodo, il numero di riga e delle informazioni di colonna utilizzata nella costruzione StackFrame e StackTrace oggetti.

StackTrace rapporto di forza non tutte le chiamate al metodo come previsto, a causa delle trasformazioni di codice che si verificano durante l'ottimizzazione.

Nell'applicazione console viene illustrato come creare un semplice StackTrace e scorrere i frame per ottenere il debug e le informazioni di diagnostica.


using System;
using System.Diagnostics;

class StackTraceSample
{
    [STAThread]
    static void Main(string[] args)
    {
        StackTraceSample sample = new StackTraceSample();
        try
        {
            sample.MyPublicMethod();
        }
        catch (Exception)
        {
            // Create a StackTrace that captures
            // filename, line number, and column
            // information for the current thread.
            StackTrace st = new StackTrace(true);
            for(int i =0; i< st.FrameCount; i++ )
            {
                // Note that high up the call stack, there is only
                // one stack frame.
                StackFrame sf = st.GetFrame(i);
                Console.WriteLine();
                Console.WriteLine("High up the call stack, Method: {0}",
                    sf.GetMethod());

                Console.WriteLine("High up the call stack, Line Number: {0}",
                    sf.GetFileLineNumber());
            }
        }
    }

    public void MyPublicMethod () 
    { 
        MyProtectedMethod(); 
    }

    protected void MyProtectedMethod ()
    {
        MyInternalClass mic = new MyInternalClass();
        mic.ThrowsException();
    }

    class MyInternalClass
    {
        public void ThrowsException()
        {
            try
            {
                throw new Exception("A problem was encountered.");
            }
            catch (Exception e)
            {
                // Create a StackTrace that captures filename,
                // line number and column information.
                StackTrace st = new StackTrace(true);
                string stackIndent = "";
                for(int i =0; i< st.FrameCount; i++ )
                {
                    // Note that at this level, there are four
                    // stack frames, one for each method invocation.
                    StackFrame sf = st.GetFrame(i);
                    Console.WriteLine();
                    Console.WriteLine(stackIndent + " Method: {0}",
                        sf.GetMethod() );
                    Console.WriteLine(  stackIndent + " File: {0}", 
                        sf.GetFileName());
                    Console.WriteLine(  stackIndent + " Line Number: {0}",
                        sf.GetFileLineNumber());
                    stackIndent += "  ";
                }
                throw e;
            }
        }
    }
}

/*
This console application produces the following output when
compiled with the Debug configuration.

   Method: Void ThrowsException()
   File: c:\samples\stacktraceframe\myclass.cs
   Line Number: 59

     Method: Void MyProtectedMethod()
     File: c:\samples\stacktraceframe\myclass.cs
     Line Number: 45

       Method: Void MyPublicMethod()
       File: c:\samples\stacktraceframe\myclass.cs
       Line Number: 39

         Method: Void Main(System.String[])
         File: c:\samples\stacktraceframe\myclass.cs
         Line Number: 13

  High up the call stack, Method: Void Main(System.String[])
  High up the call stack, Line Number: 20


This console application produces the following output when
compiled with the Release configuration.

   Method: Void ThrowsException()
   File:
   Line Number: 0

     Method: Void Main(System.String[])
     File:
     Line Number: 0

  High up the call stack, Method: Void Main(System.String[])
  High up the call stack, Line Number: 0

*/


.NET Framework

Supportato in: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (ruoli di base del server non supportati), Windows Server 2008 R2 (ruoli di base del server supportati con SP1 o versione successiva, Itanium non supportato)

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

Qualsiasi membro pubblico static (Shared in Visual Basic) di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.

Aggiunte alla community

AGGIUNGI
Microsoft sta conducendo un sondaggio in linea per comprendere l'opinione degli utenti in merito al sito Web di MSDN. Se si sceglie di partecipare, quando si lascia il sito Web di MSDN verrà visualizzato il sondaggio in linea.

Si desidera partecipare?
Mostra:
© 2015 Microsoft