42 lines
1.0 KiB
C#
42 lines
1.0 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|