我想提供一些有用的消息来调试特定的异常,为此我需要访问堆栈中所有类方法的实例。
我们以下面的代码为例。说我有以下课程:
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类。
这甚至可能吗?
感谢 查尔斯
答案 0 :(得分:0)
重复Is it possible to get parameters' values for each frame in call stack in .NET。
需要访问整个数据堆栈&堆积.NET进程。我认为这不容易(甚至可能)。建议使用日志记录机制。