Imports System.Diagnostics
Imports System.Reflection
Public Sub PrintStackTrace()
Dim st As New StackTrace(True)
For Each Frame As StackFrame In st.GetFrames()
Dim mi As MethodInfo = Frame.GetMethod()
Dim Method As String = String.Format("{0}.{1}()", mi.DeclaringType.FullName, mi.Name)
Dim File As String = Frame.GetFileName()
If String.IsNullOrEmpty(File) Then File = "<unknown file>"
Console.WriteLine(String.Format("{0,-96} in {1} (line {2})", Method, File, Frame.GetFileLineNumber()))
Public Sub PrintFullStackTrace()
Dim st As New StackTrace(True)
For Each Frame As StackFrame In st.GetFrames()
Dim mi As MethodInfo = Frame.GetMethod()
Dim Method As String = String.Format("{0}.{1}({2})", mi.DeclaringType.FullName, mi.Name, GetParameterString(mi.GetParameters()))
Dim File As String = Frame.GetFileName()
If String.IsNullOrEmpty(File) Then File = "<unknown file>"
Console.WriteLine(String.Format("{0,-128} in {1} (line {2})", Method, File, Frame.GetFileLineNumber()))
Public Sub PrintDefaultStackTrace()
Dim st As New StackTrace(True)
For Each Frame As StackFrame In st.GetFrames()
Console.WriteLine(Frame.ToString())
Public Function GetParameterString(ByVal Parameters As ParameterInfo()) As String
Dim Builder As New StringBuilder
For x = 0 To Parameters.Length - 1
Dim Param As ParameterInfo = Parameters(x)
Builder.AppendFormat("{0} {1}{2}", _
Param.ParameterType.Name, _
If(x < Parameters.Length - 1, ", ", ""))
Return Builder.ToString()