using System; using System.Collections.Generic; using System.Text; using System.Diagnostics; namespace Volian.Controls.Library { public static class vlnStackTrace { public static string GetStack(string str, params object[] objects) { return string.Format(str, objects) + StackToString(); } public static void ShowStack(string str, params object[] objects) { Console.WriteLine(string.Format(str, objects) + StackToString()); } public static string GetStack() { return StackToString(); } public static void ShowStack() { Console.WriteLine(StackToString()); } private static string StackToString() { StringBuilder sb = new StringBuilder(); StackTrace st = new StackTrace(true); StackFrame[] sfs = st.GetFrames(); int ii = 0; foreach (StackFrame sf in sfs) { if (ii < 2) ii++; else if (sf.GetFileLineNumber() != 0) sb.Append(string.Format("\r\n{0}{1}", "".PadLeft(ii++ * 2), sf.ToString().TrimEnd(" \r\n".ToCharArray()))); } return sb.ToString(); } } }