C#:在每个方法的顶部添加跟踪代码

时间:2014-02-25 17:56:42

标签: c# visual-studio-2010 debugging

我有一个包含数百个类和方法的代码库。出于调试目的,我想在顶部自动添加一行代码,每个方法打印方法名称和包含该方法的文件的名称。有没有一种简单的方法可以使用visual studio实现这一目标?

2 个答案:

答案 0 :(得分:2)

您可以在启动和/或完成方法执行时使用AOP进行记录。

我建议你阅读Spring.Net

答案 1 :(得分:2)

我不确定是否有办法自动将代码添加到每个方法中,但我可以给你一些我写的东西,如果你去手动添加一行就可以使用。我编写了下面的代码,它使用System.Diagnostics来获取类和方法的名称 - 我想我最初是从MSDN示例中删除它。

    public static string GetClassAndMethod() {

        string className = "", methodName = "";
        try {
            StackTrace st = new StackTrace(true);
            StackFrame sf = st.GetFrame(1);
            string filename = sf.GetFileName();
            className = filename.Substring(filename.LastIndexOf("\\") + 1);
            className = className.Substring(0, className.IndexOf("."));
            methodName = sf.GetMethod().Name;
        } catch (Exception ex) {
            className = "UnknownClass";
            methodName = "UnknownMethod";
        }
        return className + "." + methodName;      

    }

我已将它放在一个名为Diag的类中,然后可以在需要时调用它,例如在如下的Trace语句中:

Trace.Write(Diag.GetClassAndMethod());

我还编写了单独的GetClass()和GetMethod()来获取类或方法。将它与Trace结合的优点是只有在启用跟踪时才会调用它。

希望这有帮助。