StackTrace Konstruktory
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Inicializuje novou instanci StackTrace třídy.
Přetížení
StackTrace() |
Inicializuje novou instanci StackTrace třídy z rámce volajícího. |
StackTrace(Boolean) |
Inicializuje novou instanci StackTrace třídy z rámce volajícího, volitelně zachytává informace o zdroji. |
StackTrace(IEnumerable<StackFrame>) |
Vytvoří trasování zásobníku ze sady StackFrame objektů. |
StackTrace(StackFrame) |
Inicializuje novou instanci StackTrace třídy, která obsahuje jeden rámec. |
StackTrace(Exception) |
Inicializuje novou instanci StackTrace třídy pomocí zadaného objektu výjimky. |
StackTrace(Int32) |
Inicializuje novou instanci StackTrace třídy z rámce volajícího a přeskočí zadaný počet snímků. |
StackTrace(Exception, Int32) |
Inicializuje novou instanci StackTrace třídy pomocí zadaného objektu výjimky a přeskočí zadaný počet snímků. |
StackTrace(Int32, Boolean) |
Inicializuje novou instanci StackTrace třídy z rámce volajícího, přeskočí zadaný počet snímků a volitelně zachytí informace o zdroji. |
StackTrace(Thread, Boolean) |
Zastaralé.
Inicializuje novou instanci StackTrace třídy pro konkrétní vlákno, volitelně zaznamenává informace o zdroji. Nepoužívejte toto přetížení konstruktoru. |
StackTrace(Exception, Int32, Boolean) |
Inicializuje novou instanci StackTrace třídy pomocí poskytnutého objektu výjimky, přeskočí zadaný počet snímků a volitelně zachytí informace o zdroji. |
StackTrace(Exception, Boolean) |
Inicializuje novou instanci StackTrace třídy pomocí poskytnutého objektu výjimky a volitelně zachytává informace o zdroji. |
StackTrace()
- Zdroj:
- StackTrace.cs
- Zdroj:
- StackTrace.cs
- Zdroj:
- StackTrace.cs
Inicializuje novou instanci StackTrace třídy z rámce volajícího.
public:
StackTrace();
public StackTrace ();
Public Sub New ()
Příklady
Následující příklad kódu zobrazuje první a poslední volání funkce v trasování zásobníku.
void Level5Method()
{
try
{
ClassLevel6^ nestedClass = gcnew ClassLevel6;
nestedClass->Level6Method();
}
catch ( Exception^ e )
{
Console::WriteLine( " Level5Method exception handler" );
StackTrace^ st = gcnew StackTrace;
// Display the most recent function call.
StackFrame^ sf = st->GetFrame( 0 );
Console::WriteLine();
Console::WriteLine( " Exception in method: " );
Console::WriteLine( " {0}", sf->GetMethod() );
if ( st->FrameCount > 1 )
{
// Display the highest-level function call
// in the trace.
sf = st->GetFrame( st->FrameCount - 1 );
Console::WriteLine( " Original function call at top of call stack):" );
Console::WriteLine( " {0}", sf->GetMethod() );
}
Console::WriteLine();
Console::WriteLine( " ... throwing exception to next level ..." );
Console::WriteLine( "-------------------------------------------------\n" );
throw e;
}
}
public void Level5Method()
{
try
{
ClassLevel6 nestedClass = new ClassLevel6();
nestedClass.Level6Method();
}
catch (Exception e)
{
Console.WriteLine(" Level5Method exception handler");
StackTrace st = new StackTrace();
// Display the most recent function call.
StackFrame sf = st.GetFrame(0);
Console.WriteLine();
Console.WriteLine(" Exception in method: ");
Console.WriteLine(" {0}", sf.GetMethod());
if (st.FrameCount >1)
{
// Display the highest-level function call
// in the trace.
sf = st.GetFrame(st.FrameCount-1);
Console.WriteLine(" Original function call at top of call stack):");
Console.WriteLine(" {0}", sf.GetMethod());
}
Console.WriteLine();
Console.WriteLine(" ... throwing exception to next level ...");
Console.WriteLine("-------------------------------------------------\n");
throw e;
}
}
Public Sub Level5Method()
Try
Dim nestedClass As New ClassLevel6()
nestedClass.Level6Method()
Catch e As Exception
Console.WriteLine(" Level5Method exception handler")
Dim st As New StackTrace()
' Display the most recent function call.
Dim sf As StackFrame = st.GetFrame(0)
Console.WriteLine()
Console.WriteLine(" Exception in method: ")
Console.WriteLine(" {0}", sf.GetMethod())
If st.FrameCount > 1 Then
' Display the highest-level function call in the trace.
sf = st.GetFrame((st.FrameCount - 1))
Console.WriteLine(" Original function call at top of call stack):")
Console.WriteLine(" {0}", sf.GetMethod())
End If
Console.WriteLine()
Console.WriteLine(" ... throwing exception to next level ...")
Console.WriteLine("-------------------------------------------------")
Console.WriteLine()
Throw e
End Try
End Sub
Poznámky
Objekt StackTrace se vytvoří s aktuálním vláknem volajícího a neobsahuje název souboru, číslo řádku ani informace o sloupci.
Tento konstruktor bez parametrů použijte, pokud chcete úplné trasování pouze se souhrnnými informacemi o zásobníku volání.
Platí pro
StackTrace(Boolean)
- Zdroj:
- StackTrace.cs
- Zdroj:
- StackTrace.cs
- Zdroj:
- StackTrace.cs
Inicializuje novou instanci StackTrace třídy z rámce volajícího, volitelně zachytává informace o zdroji.
public:
StackTrace(bool fNeedFileInfo);
public StackTrace (bool fNeedFileInfo);
new System.Diagnostics.StackTrace : bool -> System.Diagnostics.StackTrace
Public Sub New (fNeedFileInfo As Boolean)
Parametry
- fNeedFileInfo
- Boolean
true
k zachycení názvu souboru, čísla řádku a čísla sloupce; v opačném případě . false
Příklady
Následující příklad kódu ukazuje různé StackTrace metody konstruktoru.
void Level2Method()
{
try
{
ClassLevel3^ nestedClass = gcnew ClassLevel3;
nestedClass->Level3Method();
}
catch ( Exception^ e )
{
Console::WriteLine( " Level2Method exception handler" );
// Display the full call stack at this level.
StackTrace^ st1 = gcnew StackTrace( true );
Console::WriteLine( " Stack trace for this level: {0}", st1->ToString() );
// Build a stack trace from one frame, skipping the
// current frame and using the next frame.
StackTrace^ st2 = gcnew StackTrace( gcnew StackFrame( 1,true ) );
Console::WriteLine( " Stack trace built with next level frame: {0}", st2->ToString() );
// Build a stack trace skipping the current frame, and
// including all the other frames.
StackTrace^ st3 = gcnew StackTrace( 1,true );
Console::WriteLine( " Stack trace built from the next level up: {0}", st3->ToString() );
Console::WriteLine();
Console::WriteLine( " ... throwing exception to next level ..." );
Console::WriteLine( "-------------------------------------------------\n" );
throw e;
}
}
public void Level2Method()
{
try
{
ClassLevel3 nestedClass = new ClassLevel3();
nestedClass.Level3Method();
}
catch (Exception e)
{
Console.WriteLine(" Level2Method exception handler");
// Display the full call stack at this level.
StackTrace st1 = new StackTrace(true);
Console.WriteLine(" Stack trace for this level: {0}",
st1.ToString());
// Build a stack trace from one frame, skipping the current
// frame and using the next frame.
StackTrace st2 = new StackTrace(new StackFrame(1, true));
Console.WriteLine(" Stack trace built with next level frame: {0}",
st2.ToString());
// Build a stack trace skipping the current frame, and
// including all the other frames.
StackTrace st3 = new StackTrace(1, true);
Console.WriteLine(" Stack trace built from the next level up: {0}",
st3.ToString());
Console.WriteLine();
Console.WriteLine(" ... throwing exception to next level ...");
Console.WriteLine("-------------------------------------------------\n");
throw e;
}
}
Public Sub Level2Method()
Try
Dim nestedClass As New ClassLevel3
nestedClass.Level3Method()
Catch e As Exception
Console.WriteLine(" Level2Method exception handler")
' Display the full call stack at this level.
Dim st1 As New StackTrace(True)
Console.WriteLine(" Stack trace for this level: {0}", _
st1.ToString())
' Build a stack trace from one frame, skipping the current
' frame and using the next frame.
Dim st2 As New StackTrace(New StackFrame(1, True))
Console.WriteLine(" Stack trace built with next level frame: {0}", _
st2.ToString())
' Build a stack trace skipping the current frame, and
' including all the other frames.
Dim st3 As New StackTrace(1, True)
Console.WriteLine(" Stack trace built from the next level up: {0}", _
st3.ToString())
Console.WriteLine()
Console.WriteLine(" ... throwing exception to next level ...")
Console.WriteLine("-------------------------------------------------")
Console.WriteLine()
Throw e
End Try
End Sub
Poznámky
Vytvoří StackTrace se s aktuálním vláknem volajícího.
Platí pro
StackTrace(IEnumerable<StackFrame>)
- Zdroj:
- StackTrace.cs
- Zdroj:
- StackTrace.cs
Vytvoří trasování zásobníku ze sady StackFrame objektů.
public:
StackTrace(System::Collections::Generic::IEnumerable<System::Diagnostics::StackFrame ^> ^ frames);
public StackTrace (System.Collections.Generic.IEnumerable<System.Diagnostics.StackFrame> frames);
new System.Diagnostics.StackTrace : seq<System.Diagnostics.StackFrame> -> System.Diagnostics.StackTrace
Public Sub New (frames As IEnumerable(Of StackFrame))
Parametry
- frames
- IEnumerable<StackFrame>
Sada rámců zásobníku, které by se měly vyskytovat v trasování zásobníku.
Platí pro
StackTrace(StackFrame)
- Zdroj:
- StackTrace.cs
- Zdroj:
- StackTrace.cs
- Zdroj:
- StackTrace.cs
Inicializuje novou instanci StackTrace třídy, která obsahuje jeden rámec.
public:
StackTrace(System::Diagnostics::StackFrame ^ frame);
public StackTrace (System.Diagnostics.StackFrame frame);
new System.Diagnostics.StackTrace : System.Diagnostics.StackFrame -> System.Diagnostics.StackTrace
Public Sub New (frame As StackFrame)
Parametry
- frame
- StackFrame
Rámeček, který StackTrace by měl objekt obsahovat.
Příklady
Následující příklad kódu zapisuje informace o trasování zásobníku do položky protokolu událostí.
StackFrame^ fr = gcnew StackFrame( 1,true );
StackTrace^ st = gcnew StackTrace( fr );
EventLog::WriteEntry( fr->GetMethod()->Name, st->ToString(), EventLogEntryType::Warning );
StackFrame fr = new StackFrame(1,true);
StackTrace st = new StackTrace(fr);
EventLog.WriteEntry(fr.GetMethod().Name,
st.ToString(),
EventLogEntryType.Warning);
Dim frame As New StackFrame(1, True)
Dim strace As New StackTrace(frame)
EventLog.WriteEntry(frame.GetMethod().Name, _
strace.ToString(), _
EventLogEntryType.Warning)
Poznámky
Tento konstruktor použijte, pokud nechcete mít režii úplného trasování zásobníku.
Viz také
Platí pro
StackTrace(Exception)
- Zdroj:
- StackTrace.cs
- Zdroj:
- StackTrace.cs
- Zdroj:
- StackTrace.cs
Inicializuje novou instanci StackTrace třídy pomocí zadaného objektu výjimky.
public:
StackTrace(Exception ^ e);
public StackTrace (Exception e);
new System.Diagnostics.StackTrace : Exception -> System.Diagnostics.StackTrace
Public Sub New (e As Exception)
Parametry
Objekt výjimky, ze kterého se má vytvořit trasování zásobníku.
Výjimky
Parametr e
je null
.
Poznámky
Objekt StackTrace se vytvoří s aktuálním vláknem volajícího a neobsahuje název souboru, číslo řádku ani informace o sloupci.
Výsledné trasování zásobníku popisuje zásobník v době výjimky.
Viz také
Platí pro
StackTrace(Int32)
- Zdroj:
- StackTrace.cs
- Zdroj:
- StackTrace.cs
- Zdroj:
- StackTrace.cs
Inicializuje novou instanci StackTrace třídy z rámce volajícího a přeskočí zadaný počet snímků.
public:
StackTrace(int skipFrames);
public StackTrace (int skipFrames);
new System.Diagnostics.StackTrace : int -> System.Diagnostics.StackTrace
Public Sub New (skipFrames As Integer)
Parametry
- skipFrames
- Int32
Počet snímků nad zásobníkem, ze kterých se má spustit trasování.
Výjimky
Parametr skipFrames
je záporný.
Poznámky
Objekt StackTrace se vytvoří s aktuálním vláknem volajícího a neobsahuje název souboru, číslo řádku ani informace o sloupci.
Pokud je počet snímků, které se mají přeskočit, větší nebo roven celkovému počtu snímků v zásobníku volání v době vytvoření instance, StackTrace nebude obsahovat žádné snímky.
Platí pro
StackTrace(Exception, Int32)
- Zdroj:
- StackTrace.cs
- Zdroj:
- StackTrace.cs
- Zdroj:
- StackTrace.cs
Inicializuje novou instanci StackTrace třídy pomocí zadaného objektu výjimky a přeskočí zadaný počet snímků.
public:
StackTrace(Exception ^ e, int skipFrames);
public StackTrace (Exception e, int skipFrames);
new System.Diagnostics.StackTrace : Exception * int -> System.Diagnostics.StackTrace
Public Sub New (e As Exception, skipFrames As Integer)
Parametry
Objekt výjimky, ze kterého se má vytvořit trasování zásobníku.
- skipFrames
- Int32
Počet snímků nad zásobníkem, ze kterých se má spustit trasování.
Výjimky
Parametr e
je null
.
Parametr skipFrames
je záporný.
Poznámky
Soubor StackTrace neobsahuje název souboru, číslo řádku ani informace o sloupci.
Výsledné trasování zásobníku popisuje zásobník v době výjimky.
Pokud je počet snímků, které se mají přeskočit, větší nebo roven celkovému počtu snímků v zásobníku volání v době vytvoření instance, StackTrace nebude obsahovat žádné snímky.
Viz také
Platí pro
StackTrace(Int32, Boolean)
- Zdroj:
- StackTrace.cs
- Zdroj:
- StackTrace.cs
- Zdroj:
- StackTrace.cs
Inicializuje novou instanci StackTrace třídy z rámce volajícího, přeskočí zadaný počet snímků a volitelně zachytí informace o zdroji.
public:
StackTrace(int skipFrames, bool fNeedFileInfo);
public StackTrace (int skipFrames, bool fNeedFileInfo);
new System.Diagnostics.StackTrace : int * bool -> System.Diagnostics.StackTrace
Public Sub New (skipFrames As Integer, fNeedFileInfo As Boolean)
Parametry
- skipFrames
- Int32
Počet snímků nad zásobníkem, ze kterých se má spustit trasování.
- fNeedFileInfo
- Boolean
true
k zachycení názvu souboru, čísla řádku a čísla sloupce; v opačném případě . false
Výjimky
Parametr skipFrames
je záporný.
Příklady
Následující příklad kódu ukazuje různé StackTrace metody konstruktoru.
void Level2Method()
{
try
{
ClassLevel3^ nestedClass = gcnew ClassLevel3;
nestedClass->Level3Method();
}
catch ( Exception^ e )
{
Console::WriteLine( " Level2Method exception handler" );
// Display the full call stack at this level.
StackTrace^ st1 = gcnew StackTrace( true );
Console::WriteLine( " Stack trace for this level: {0}", st1->ToString() );
// Build a stack trace from one frame, skipping the
// current frame and using the next frame.
StackTrace^ st2 = gcnew StackTrace( gcnew StackFrame( 1,true ) );
Console::WriteLine( " Stack trace built with next level frame: {0}", st2->ToString() );
// Build a stack trace skipping the current frame, and
// including all the other frames.
StackTrace^ st3 = gcnew StackTrace( 1,true );
Console::WriteLine( " Stack trace built from the next level up: {0}", st3->ToString() );
Console::WriteLine();
Console::WriteLine( " ... throwing exception to next level ..." );
Console::WriteLine( "-------------------------------------------------\n" );
throw e;
}
}
public void Level2Method()
{
try
{
ClassLevel3 nestedClass = new ClassLevel3();
nestedClass.Level3Method();
}
catch (Exception e)
{
Console.WriteLine(" Level2Method exception handler");
// Display the full call stack at this level.
StackTrace st1 = new StackTrace(true);
Console.WriteLine(" Stack trace for this level: {0}",
st1.ToString());
// Build a stack trace from one frame, skipping the current
// frame and using the next frame.
StackTrace st2 = new StackTrace(new StackFrame(1, true));
Console.WriteLine(" Stack trace built with next level frame: {0}",
st2.ToString());
// Build a stack trace skipping the current frame, and
// including all the other frames.
StackTrace st3 = new StackTrace(1, true);
Console.WriteLine(" Stack trace built from the next level up: {0}",
st3.ToString());
Console.WriteLine();
Console.WriteLine(" ... throwing exception to next level ...");
Console.WriteLine("-------------------------------------------------\n");
throw e;
}
}
Public Sub Level2Method()
Try
Dim nestedClass As New ClassLevel3
nestedClass.Level3Method()
Catch e As Exception
Console.WriteLine(" Level2Method exception handler")
' Display the full call stack at this level.
Dim st1 As New StackTrace(True)
Console.WriteLine(" Stack trace for this level: {0}", _
st1.ToString())
' Build a stack trace from one frame, skipping the current
' frame and using the next frame.
Dim st2 As New StackTrace(New StackFrame(1, True))
Console.WriteLine(" Stack trace built with next level frame: {0}", _
st2.ToString())
' Build a stack trace skipping the current frame, and
' including all the other frames.
Dim st3 As New StackTrace(1, True)
Console.WriteLine(" Stack trace built from the next level up: {0}", _
st3.ToString())
Console.WriteLine()
Console.WriteLine(" ... throwing exception to next level ...")
Console.WriteLine("-------------------------------------------------")
Console.WriteLine()
Throw e
End Try
End Sub
Poznámky
Pokud je počet snímků, které se mají přeskočit, větší nebo roven celkovému počtu snímků v zásobníku volání v době vytvoření instance, StackTrace nebude obsahovat žádné snímky.
Platí pro
StackTrace(Thread, Boolean)
Upozornění
This constructor has been deprecated. Please use a constructor that does not require a Thread parameter. http://go.microsoft.com/fwlink/?linkid=14202
Inicializuje novou instanci StackTrace třídy pro konkrétní vlákno, volitelně zaznamenává informace o zdroji.
Nepoužívejte toto přetížení konstruktoru.
public:
StackTrace(System::Threading::Thread ^ targetThread, bool needFileInfo);
public StackTrace (System.Threading.Thread targetThread, bool needFileInfo);
[System.Obsolete("This constructor has been deprecated. Please use a constructor that does not require a Thread parameter. http://go.microsoft.com/fwlink/?linkid=14202")]
public StackTrace (System.Threading.Thread targetThread, bool needFileInfo);
new System.Diagnostics.StackTrace : System.Threading.Thread * bool -> System.Diagnostics.StackTrace
[<System.Obsolete("This constructor has been deprecated. Please use a constructor that does not require a Thread parameter. http://go.microsoft.com/fwlink/?linkid=14202")>]
new System.Diagnostics.StackTrace : System.Threading.Thread * bool -> System.Diagnostics.StackTrace
Public Sub New (targetThread As Thread, needFileInfo As Boolean)
Parametry
- targetThread
- Thread
Vlákno, jehož trasování zásobníku je požadováno.
- needFileInfo
- Boolean
true
k zachycení názvu souboru, čísla řádku a čísla sloupce; v opačném případě . false
- Atributy
Výjimky
Vlákno targetThread
není pozastaveno.
Poznámky
Důležité
Nepoužívejte tento konstruktor. Je zastaralý a neexistuje žádná doporučená alternativa. Když pozastavíte vlákno, nemáte žádný způsob, jak zjistit, jaký kód se spouští, a k zablokování může dojít velmi snadno. Pokud například během vyhodnocení oprávnění zabezpečení pozastavíte vlákno, které obsahuje zámky, můžou být zablokovaná další vlákna v objektu AppDomain . Pokud pozastavíte vlákno při provádění konstruktoru třídy, ostatní vlákna v objektu AppDomain , který se pokusí tuto třídu použít, jsou blokovány.
Viz také
Platí pro
StackTrace(Exception, Int32, Boolean)
- Zdroj:
- StackTrace.cs
- Zdroj:
- StackTrace.cs
- Zdroj:
- StackTrace.cs
Inicializuje novou instanci StackTrace třídy pomocí poskytnutého objektu výjimky, přeskočí zadaný počet snímků a volitelně zachytí informace o zdroji.
public:
StackTrace(Exception ^ e, int skipFrames, bool fNeedFileInfo);
public StackTrace (Exception e, int skipFrames, bool fNeedFileInfo);
new System.Diagnostics.StackTrace : Exception * int * bool -> System.Diagnostics.StackTrace
Public Sub New (e As Exception, skipFrames As Integer, fNeedFileInfo As Boolean)
Parametry
Objekt výjimky, ze kterého se má vytvořit trasování zásobníku.
- skipFrames
- Int32
Počet snímků nad zásobníkem, ze kterých se má spustit trasování.
- fNeedFileInfo
- Boolean
true
k zachycení názvu souboru, čísla řádku a čísla sloupce; v opačném případě . false
Výjimky
Parametr e
je null
.
Parametr skipFrames
je záporný.
Poznámky
Výsledné trasování zásobníku popisuje zásobník v době výjimky.
Pokud je počet snímků, které se mají přeskočit, větší nebo roven celkovému počtu snímků v zásobníku volání v době vytvoření instance, StackTrace nebude obsahovat žádné snímky.
Viz také
Platí pro
StackTrace(Exception, Boolean)
- Zdroj:
- StackTrace.cs
- Zdroj:
- StackTrace.cs
- Zdroj:
- StackTrace.cs
Inicializuje novou instanci StackTrace třídy pomocí poskytnutého objektu výjimky a volitelně zachytává informace o zdroji.
public:
StackTrace(Exception ^ exception, bool needFileInfo);
public:
StackTrace(Exception ^ e, bool fNeedFileInfo);
public StackTrace (Exception exception, bool needFileInfo);
public StackTrace (Exception e, bool fNeedFileInfo);
new System.Diagnostics.StackTrace : Exception * bool -> System.Diagnostics.StackTrace
new System.Diagnostics.StackTrace : Exception * bool -> System.Diagnostics.StackTrace
Public Sub New (exception As Exception, needFileInfo As Boolean)
Public Sub New (e As Exception, fNeedFileInfo As Boolean)
Parametry
- exceptione
- Exception
Objekt výjimky, ze kterého se má vytvořit trasování zásobníku.
- needFileInfofNeedFileInfo
- Boolean
true
k zachycení názvu souboru, čísla řádku a čísla sloupce; v opačném případě . false
Výjimky
Parametr e
je null
.
Poznámky
Výsledné trasování zásobníku popisuje zásobník v době výjimky.