Here is the code I use in C# to output the Call Stack. In this example, I am using log4net to output each line in a log file, but it would be possible to use Writeln or another logging library:

            log4net.ILog logger = log4net.LogManager.GetLogger("File");
            logger.Debug("Call stack:");

            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);
                logger.Debug(string.Format("{0} ({1}): {2}", sf.GetFileName(), sf.GetFileLineNumber().ToString(), sf.GetMethod()));
            }           

            application.EndRequest += new EventHandler(OnEndRequest);

            logger.Debug("End of Call Stack");
Posted in C#