This topic has not yet been rated - Rate this topic

StackFrame Constructor (Int32)

Initializes a new instance of the StackFrame class that corresponds to a frame above the current stack frame.

Namespace:  System.Diagnostics
Assembly:  mscorlib (in mscorlib.dll)
public StackFrame(
	int skipFrames
)

Parameters

skipFrames
Type: System.Int32
The number of frames up the stack to skip.

The following example demonstrates the use of the StackFrame(Int32) constructor. This code example is part of a larger example provided for the StackFrame class.


public void InternalMethod()
{
   try
   {
      ClassLevel2 nestedClass = new ClassLevel2();
      nestedClass.Level2Method();
   }
   catch (Exception e)
   {
      Console.WriteLine(" InternalMethod exception handler");

      // Build a stack trace from one frame, skipping the
      // current frame and using the next frame.  By
      // default, file and line information are not displayed.
      StackTrace st = new StackTrace(new StackFrame(1));
      Console.WriteLine(" Stack trace for next level frame: {0}",
         st.ToString());
      Console.WriteLine(" Stack frame for next level: ");
      Console.WriteLine("   {0}", st.GetFrame(0).ToString());

      Console.WriteLine(" Line Number: {0}",
         st.GetFrame(0).GetFileLineNumber().ToString());

      Console.WriteLine();
      Console.WriteLine("   ... throwing exception to next level ...");
      Console.WriteLine("-------------------------------------------------\n");
      throw e;
   }
}


.NET Framework

Supported in: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Did you find this helpful?
(1500 characters remaining)
Community Content Add
Annotations FAQ
Does not work in release
It should be noted that the compiler optimzes the StackFrame when not hosted in Visual Studio and in release mode. So if you have a call chain of Main() -> A() -> B() -> C() and you log the name in C, you get Main, even though it is called from B.