DebuggerStepThrough属性-如何也跳过子方法

时间:2018-12-31 18:17:02

标签: c# .net

在Visual Studio调试器中工作时,我一直使用 System.Diagnostics.DebuggerStepThrough 属性跳过代码。
但是,有时我希望它也跳过在我已应用 DebuggerStepThrough 属性的方法中调用的所有方法。

有办法吗?
我不希望这影响我已应用此属性的所有方法,但是有时我不希望调用/使用任何代码来为我已应用的方法中调用的所有方法打开调试器此属性。

static void main(string[] args)
{
    Method1();
}

[DebuggerStepThrough()]
private static void Method1()
{
    Method2(); 'The Debugger is stopping in Method2 when I am manually stepping through the code
}

private static void Method2()
{
    '... Code I don't care about however debugger is stopping here.
}

所以上面的代码示例是我正在遇到的示例。
有没有办法让我告诉Visual Studio也跳过从Method1()内部调用的方法?
目前,当我在Visual Studio中手动浏览代码时,我发现我必须向所有调用的方法添加 [DebuggerStepThrough()] 属性,即使它们是从具有属性已应用。在此示例中,调试器正在Method2()内部停止。

我希望有一种方法可以让我不必将此属性应用于从 Parent 方法调用的所有方法。
也许这很容易让我迷失。

1 个答案:

答案 0 :(得分:6)

DebuggerStepperBoundaryAttribute添加到您要逐步执行的方法中。

在示例代码中,当执行在 Method1() 调用处停止时,您逐步执行代码,而不是在 Method2 ,代码执行将以 Console.WriteLine("Suddenly here") 继续(当然,Method1Method2中的代码都将运行):

static void main(string[] args)
{
    Method1();
    Console.WriteLine("Suddenly here");
}

[DebuggerStepThrough, DebuggerStepperBoundary]
private static void Method1()
{
    Method2();
}

private static void Method2()
{
    //Skipped
    Console.WriteLine("Skipped but still printing");
}