StackTrace 생성자
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
StackTrace 클래스의 새 인스턴스를 초기화합니다.
오버로드
StackTrace() |
호출자 프레임에서 StackTrace 클래스의 새 인스턴스를 초기화합니다. |
StackTrace(Boolean) |
필요에 따라 소스 정보를 캡처하고 호출 프레임에서 StackTrace 클래스의 새 인스턴스를 초기화합니다. |
StackTrace(IEnumerable<StackFrame>) |
개체 집합 StackFrame 에서 스택 추적을 생성합니다. |
StackTrace(StackFrame) |
단일 프레임을 포함하는 StackTrace 클래스의 새 인스턴스를 초기화합니다. |
StackTrace(Exception) |
제공된 예외 개체를 사용하여 StackTrace 클래스의 새 인스턴스를 초기화합니다. |
StackTrace(Int32) |
지정된 수의 프레임을 건너뛰어 호출자 프레임에서 StackTrace 클래스의 새 인스턴스를 초기화합니다. |
StackTrace(Exception, Int32) |
제공된 예외 개체를 사용하고 지정된 수의 프레임을 건너뛰어 StackTrace 클래스의 새 인스턴스를 초기화합니다. |
StackTrace(Int32, Boolean) |
지정된 수의 프레임을 건너뛰고 필요에 따라 소스 정보를 캡처하여 호출자 프레임에서 StackTrace 클래스의 새 인스턴스를 초기화합니다. |
StackTrace(Thread, Boolean) |
사용되지 않음.
필요에 따라 소스 정보를 캡처하고 특정 스레드에 대해 StackTrace 클래스의 새 인스턴스를 초기화합니다. 이 생성자 오버로드를 사용하지 마십시오. |
StackTrace(Exception, Int32, Boolean) |
지정된 수의 프레임을 건너뛰고 필요에 따라 소스 정보를 캡처하여 제공된 예외 개체로 StackTrace 클래스의 새 인스턴스를 초기화합니다. |
StackTrace(Exception, Boolean) |
필요에 따라 소스 정보를 캡처하고 제공된 예외 개체를 사용하여 StackTrace 클래스의 새 인스턴스를 초기화합니다. |
StackTrace()
- Source:
- StackTrace.cs
- Source:
- StackTrace.cs
- Source:
- StackTrace.cs
호출자 프레임에서 StackTrace 클래스의 새 인스턴스를 초기화합니다.
public:
StackTrace();
public StackTrace ();
Public Sub New ()
예제
다음 코드 예제에서는 스택 추적의 첫 번째 및 마지막 함수 호출을 표시합니다.
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
설명
는 StackTrace 호출자의 현재 스레드를 사용하여 생성되며 파일 이름, 줄 번호 또는 열 정보를 포함하지 않습니다.
호출 스택에 대한 요약 메서드 정보만 있는 완전한 추적을 원하는 경우 이 매개 변수가 없는 생성자를 사용합니다.
적용 대상
StackTrace(Boolean)
- Source:
- StackTrace.cs
- Source:
- StackTrace.cs
- Source:
- StackTrace.cs
필요에 따라 소스 정보를 캡처하고 호출 프레임에서 StackTrace 클래스의 새 인스턴스를 초기화합니다.
public:
StackTrace(bool fNeedFileInfo);
public StackTrace (bool fNeedFileInfo);
new System.Diagnostics.StackTrace : bool -> System.Diagnostics.StackTrace
Public Sub New (fNeedFileInfo As Boolean)
매개 변수
- fNeedFileInfo
- Boolean
파일 이름, 줄 번호 및 열 번호를 캡처하려면 true
이고, 그렇지 않으면 false
입니다.
예제
다음 코드 예제에서는 다양 StackTrace 한 생성자 메서드를 보여 줍니다.
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
설명
는 StackTrace 호출자의 현재 스레드를 사용하여 만들어집니다.
적용 대상
StackTrace(IEnumerable<StackFrame>)
- Source:
- StackTrace.cs
- Source:
- StackTrace.cs
개체 집합 StackFrame 에서 스택 추적을 생성합니다.
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))
매개 변수
- frames
- IEnumerable<StackFrame>
스택 추적에 있어야 하는 스택 프레임 집합입니다.
적용 대상
StackTrace(StackFrame)
- Source:
- StackTrace.cs
- Source:
- StackTrace.cs
- Source:
- StackTrace.cs
단일 프레임을 포함하는 StackTrace 클래스의 새 인스턴스를 초기화합니다.
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)
매개 변수
- frame
- StackFrame
StackTrace 개체가 포함해야 하는 프레임입니다.
예제
다음 코드 예제에서는 스택 추적 정보를 이벤트 로그 항목에 씁니다.
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)
설명
전체 스택 추적의 오버헤드를 원하지 않는 경우 이 생성자를 사용합니다.
추가 정보
적용 대상
StackTrace(Exception)
- Source:
- StackTrace.cs
- Source:
- StackTrace.cs
- Source:
- StackTrace.cs
제공된 예외 개체를 사용하여 StackTrace 클래스의 새 인스턴스를 초기화합니다.
public:
StackTrace(Exception ^ e);
public StackTrace (Exception e);
new System.Diagnostics.StackTrace : Exception -> System.Diagnostics.StackTrace
Public Sub New (e As Exception)
매개 변수
스택 추적을 생성할 원본 예외 개체입니다.
예외
매개 변수 e
가 null
인 경우
설명
는 StackTrace 호출자의 현재 스레드를 사용하여 생성되며 파일 이름, 줄 번호 또는 열 정보를 포함하지 않습니다.
결과 스택 추적은 예외 발생 시 스택을 설명합니다.
추가 정보
적용 대상
StackTrace(Int32)
- Source:
- StackTrace.cs
- Source:
- StackTrace.cs
- Source:
- StackTrace.cs
지정된 수의 프레임을 건너뛰어 호출자 프레임에서 StackTrace 클래스의 새 인스턴스를 초기화합니다.
public:
StackTrace(int skipFrames);
public StackTrace (int skipFrames);
new System.Diagnostics.StackTrace : int -> System.Diagnostics.StackTrace
Public Sub New (skipFrames As Integer)
매개 변수
- skipFrames
- Int32
추적할 스택 프레임의 개수입니다.
예외
skipFrames
매개 변수가 음수인 경우
설명
는 StackTrace 호출자의 현재 스레드를 사용하여 생성되며 파일 이름, 줄 번호 또는 열 정보를 포함하지 않습니다.
건너뛸 프레임 수가 instance 생성 StackTrace 될 때 호출 스택의 총 프레임 수보다 크거나 같으면 에 프레임이 포함되지 않습니다.
적용 대상
StackTrace(Exception, Int32)
- Source:
- StackTrace.cs
- Source:
- StackTrace.cs
- Source:
- StackTrace.cs
제공된 예외 개체를 사용하고 지정된 수의 프레임을 건너뛰어 StackTrace 클래스의 새 인스턴스를 초기화합니다.
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)
매개 변수
스택 추적을 생성할 원본 예외 개체입니다.
- skipFrames
- Int32
추적할 스택 프레임의 개수입니다.
예외
매개 변수 e
가 null
인 경우
skipFrames
매개 변수가 음수인 경우
설명
는 StackTrace 파일 이름, 줄 번호 또는 열 정보를 포함하지 않습니다.
결과 스택 추적은 예외 발생 시 스택을 설명합니다.
건너뛸 프레임 수가 instance 생성 StackTrace 될 때 호출 스택의 총 프레임 수보다 크거나 같으면 에 프레임이 포함되지 않습니다.
추가 정보
적용 대상
StackTrace(Int32, Boolean)
- Source:
- StackTrace.cs
- Source:
- StackTrace.cs
- Source:
- StackTrace.cs
지정된 수의 프레임을 건너뛰고 필요에 따라 소스 정보를 캡처하여 호출자 프레임에서 StackTrace 클래스의 새 인스턴스를 초기화합니다.
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)
매개 변수
- skipFrames
- Int32
추적할 스택 프레임의 개수입니다.
- fNeedFileInfo
- Boolean
파일 이름, 줄 번호 및 열 번호를 캡처하려면 true
이고, 그렇지 않으면 false
입니다.
예외
skipFrames
매개 변수가 음수인 경우
예제
다음 코드 예제에서는 다양 StackTrace 한 생성자 메서드를 보여 줍니다.
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
설명
건너뛸 프레임 수가 instance 생성 StackTrace 될 때 호출 스택의 총 프레임 수보다 크거나 같으면 에 프레임이 포함되지 않습니다.
적용 대상
StackTrace(Thread, Boolean)
주의
This constructor has been deprecated. Please use a constructor that does not require a Thread parameter. http://go.microsoft.com/fwlink/?linkid=14202
필요에 따라 소스 정보를 캡처하고 특정 스레드에 대해 StackTrace 클래스의 새 인스턴스를 초기화합니다.
이 생성자 오버로드를 사용하지 마십시오.
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)
매개 변수
- targetThread
- Thread
스택 추적이 필요한 스레드입니다.
- needFileInfo
- Boolean
파일 이름, 줄 번호 및 열 번호를 캡처하려면 true
이고, 그렇지 않으면 false
입니다.
- 특성
예외
targetThread
스레드가 일시 중단되지 않는 경우
설명
중요
이 생성자를 사용하지 마세요. 사용되지 않으며 권장되는 대안은 없습니다. 스레드를 일시 중단하면 실행 중인 코드를 알 수 없으며 교착 상태가 매우 쉽게 발생할 수 있습니다. 예를 들어 보안 권한 평가 중에 잠금을 보유하는 동안 스레드를 일시 중단하면 의 AppDomain 다른 스레드가 차단될 수 있습니다. 클래스 생성자를 실행하는 동안 스레드를 일시 중단하면 해당 클래스를 사용하려는 의 AppDomain 다른 스레드가 차단됩니다.
추가 정보
적용 대상
StackTrace(Exception, Int32, Boolean)
- Source:
- StackTrace.cs
- Source:
- StackTrace.cs
- Source:
- StackTrace.cs
지정된 수의 프레임을 건너뛰고 필요에 따라 소스 정보를 캡처하여 제공된 예외 개체로 StackTrace 클래스의 새 인스턴스를 초기화합니다.
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)
매개 변수
스택 추적을 생성할 원본 예외 개체입니다.
- skipFrames
- Int32
추적할 스택 프레임의 개수입니다.
- fNeedFileInfo
- Boolean
파일 이름, 줄 번호 및 열 번호를 캡처하려면 true
이고, 그렇지 않으면 false
입니다.
예외
매개 변수 e
가 null
인 경우
skipFrames
매개 변수가 음수인 경우
설명
결과 스택 추적은 예외 발생 시 스택을 설명합니다.
건너뛸 프레임 수가 instance 생성 StackTrace 될 때 호출 스택의 총 프레임 수보다 크거나 같으면 에 프레임이 포함되지 않습니다.
추가 정보
적용 대상
StackTrace(Exception, Boolean)
- Source:
- StackTrace.cs
- Source:
- StackTrace.cs
- Source:
- StackTrace.cs
필요에 따라 소스 정보를 캡처하고 제공된 예외 개체를 사용하여 StackTrace 클래스의 새 인스턴스를 초기화합니다.
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)
매개 변수
- exceptione
- Exception
스택 추적을 생성할 원본 예외 개체입니다.
- needFileInfofNeedFileInfo
- Boolean
파일 이름, 줄 번호 및 열 번호를 캡처하려면 true
이고, 그렇지 않으면 false
입니다.
예외
매개 변수 e
가 null
인 경우
설명
결과 스택 추적은 예외 발생 시 스택을 설명합니다.
추가 정보
적용 대상
.NET