在Visual Studio中,F10和F11键有什么区别?

26

我是C#的新手。我遇到了一个断点,然后按下了F10F11

编译时应该使用哪个键?

请帮助我。你能解释一下这些键是做什么的吗?

6个回答

43

F10("跳过")不会进一步进入调用堆栈,而是移动到当前函数的下一行。

F11("逐步执行")会深入到所调用函数内部。

void function1()
{
    function2();
    function3();
}
如果您在function2()上设置了断点,则F10将前进到function3()行。F11将前进到function2内的第一行。

1
Shift F11 = "步出"; 我也非常喜欢这个调试热键。 - Catto

4
如果您是Visual Studio的绝对初学者,请使用Visual Studio 2017:
功能键F10和F11有助于跟踪代码的执行路径,从而帮助检查中间结果并调试代码。
您需要在自己的代码中的任何一行(在方法(函数)内部)上设置“断点”。在执行程序之前,只需单击代码窗口的最左侧边框,即对应于您需要开始调试的代码语句。您可以在代码中放置多个断点。
现在运行程序,它将在第一个断点处自动停止。现在不断按F10以从一个语句移动到另一个语句以继续执行程序(按顺序)。
但是,如果您当前位于包含函数(方法)调用的语句(例如FindSum(a,b);),现在如果您按F11,它将带您到函数FindSum(a,b)的第一行并继续执行。请注意,当您当前语句涉及函数调用时按F10,它将仅执行函数(而不带您进入函数体中的语句)并移到代码中的下一行。
简而言之,按F11将带您到包括函数体在内的每一行,但F10允许从一行移动到下一行。

1
一个例子。假设我们有以下代码片段。
使用System;
命名空间ConsoleApplication1 { 类Program { 静态void Main(string [] args) { var add = AddFunction(10,20); Console.WriteLine(add); Console.ReadKey(); } } }
    static int AddFunction(int a,int b)
    {
            return a+b; 
    }
}  

}

现在在 var add = AddFunction(10,20); 处设置断点。
如果我们执行 Step Over(或 F10),那么在该行之后,控制将转到下一行,即 Console.WriteLine(add); ,然后是 Console.ReadKey(); ,最后是 } 并最终向操作系统返回值 0。
如果我们执行 Step Into(或 F11),则在 var add = AddFunction(10,20); 之后,控制将进入所调用的函数 AddFunciton 的实现,该函数返回 a+b,然后是 Console.WriteLine(add); 等等。
希望这对您有所帮助。

0

F10 -> 执行下一行代码,但不跟随执行任何函数调用(步过)。

F11 -> 逐语句执行代码,跟随执行进入函数调用(步入)。


0

F10 可以逐步调试代码。 如果您可以调用此类或任何系统类中的任何函数,则 F10 不会进入该类或方法的定义部分,它们只是按步骤流动,但如果您可以使用 F11 进行调试,则可以进入函数或类的定义部分。


-2

F10=>逐行执行(跳过函数内部)

F11=>逐行调试(进入函数内部)


1
有三个来自三年前的其他答案。请确保您的答案对已经存在的答案有所补充。 - default locale

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接