如何在stacktrace中获取参数值

Jon*_*zzi 15 .net c# system.diagnostics exception stack-trace

我可以通过StackTrace获取有关参数的信息,使用类似的方法:

catch (Exception ex)
{
    var st = new StackTrace(ex);

    System.Reflection.ParameterInfo pi = st.GetFrame(0).GetMethod().GetParameters().First();
}
Run Code Online (Sandbox Code Playgroud)

我想知道我如何获得参数的值.例:

如果我在堆栈跟踪中的方法是这样的:

void MyMethod(object value)
Run Code Online (Sandbox Code Playgroud)

电话就像:

MyMethod(10);
Run Code Online (Sandbox Code Playgroud)

我想得到价值10.我怎么做?

Ben*_*igt 9

有两种方法.更强大的是用于.NET调试的COM API.例如,调用堆栈中函数的参数和局部变量都可以从ICorDebugILFrame访问.但这必须从作为调试器附加到您的进程的单独进程运行.

对于进程内自省,有Profiler API,它也可以找到有关函数参数的信息.查看有关"影子堆栈"的信息.