如何从StackTrace中的方法库获取类实例

时间:2014-02-12 09:51:22

标签: .net vb.net

我想提供一些有用的消息来调试特定的异常,为此我需要访问堆栈中所有类方法的实例。

我们以下面的代码为例。说我有以下课程:

Public Class Foo
  Public Name As String
  Public Sub DoStuff(Optional N As Integer = 10)
    If N = 0 Then Throw New Exception("Boom")
    Dim C As New Foo
    C.Name = "Class level =  " & N
    C.DoStuff(N - 1)
  End Sub
End Class

它会导致异常。我想要做的是捕获堆栈中所有Foo实例的Name值。

Try
  Dim C As New Foo
  C.Name = "Base class"
  C.DoStuff()
Catch ex As Exception
  Dim St As New StackTrace(ex)
  For i As Integer = 0 To St.FrameCount - 1
    Dim M = St.GetFrame(i).GetMethod()
    Console.WriteLine(M.Name & " " & M.DeclaringType.ToString)
  Next
End Try

我几乎是这些,我可以在调用堆栈中获取类的方法和类型,但我缺少的是能够获取实际的实例以便能够访问每个的名称堆栈中的Foo类。

这甚至可能吗?

感谢 查尔斯

1 个答案:

答案 0 :(得分:0)

重复Is it possible to get parameters' values for each frame in call stack in .NET

需要访问整个数据堆栈&堆积.NET进程。我认为这不容易(甚至可能)。建议使用日志记录机制。