6

使用System.Diagnostics. 我想知道是否可以在堆栈跟踪中打印传递给每个方法的参数的值,如果不能,为什么不打印。

这是我的初步代码:

public static class CallStackTracker
{
    public static void Print()
    {
        var st = new StackTrace();
        for (int i = 0; i < st.FrameCount; i++)
        {
            var frame = st.GetFrame(i);
            var mb = frame.GetMethod();
            var parameters = mb.GetParameters();
            foreach (var p in parameters)
            {
                // Stuff probably goes here, but is there another way?
            }
        }
    }
}

提前致谢。

4

1 回答 1

2

你不能这样做,至少不能使用System.Diagnostics. 该类StackFrame不提供访问参数值的方法(MethodBase.GetParameters提供有关声明参数的信息,例如它们的名称和类型,但不提供实际参数的值)

我认为使用 CLR 调试 API 可以做到这一点,但可能不是来自 C#

于 2012-04-11T22:07:11.923 回答