如何在VS 2012中的类中的所有方法上设置断点

时间:2013-06-27 09:52:03

标签: c# visual-studio visual-studio-2012 breakpoints visual-studio-debugging

如何在VS 2012中的类中的所有方法上设置断点。
类似的问题发布在How do I set a breakpoint on every access to a class
但是解决方案不适用于VS2012

2 个答案:

答案 0 :(得分:0)

您可以考虑使用Debugger.Break并将其注入您想要分析的每种方法中。

注射可以手工完成,也可以通过AOP编程等机制完成。

答案 1 :(得分:0)

您可以将插入符号放置在类定义中,并为Visual Commander调用以下命令(语言:C#)以在所有方法上设置断点:

using EnvDTE;
using EnvDTE80;

public class C : VisualCommanderExt.ICommand
{
    public void Run(EnvDTE80.DTE2 DTE, Microsoft.VisualStudio.Shell.Package package) 
    {
        EnvDTE.TextSelection ts = DTE.ActiveWindow.Selection as EnvDTE.TextSelection;
        if (ts == null)
            return;

        EnvDTE.CodeClass c = ts.ActivePoint.CodeElement[vsCMElement.vsCMElementClass]
                    as EnvDTE.CodeClass;
        if (c == null)
            return;

        foreach(EnvDTE.CodeElement e in c.Members)
        {
            if(e.Kind== vsCMElement.vsCMElementFunction)
            {
                EnvDTE.TextPoint p = (e as EnvDTE.CodeFunction).GetStartPoint();
                DTE.Debugger.Breakpoints.Add("", p.Parent.Parent.FullName, p.Line);
            }
        }
    }
}