介绍调试器的“步骤”?

时间:2014-06-06 17:35:55

标签: debugging

继续单步进入退出
我希望更好地理解在调试器中按下这些按钮时会发生什么。

有很多语言&工具特定的调试器条目,但我找不到该功能的一般说明。

2 个答案:

答案 0 :(得分:0)

简单地说,这是你通过调试器一次一行地推进(“步骤”)代码的方式。以下是使用Visual Studio调试器的示例。

假设您有以下代码:

public static void Main(string[] args)
{
  int x = 4;
  M(x);
}

private static void M(int x)
{
  Console.WriteLine(x);
}

假设您在M(x)行放置断点。当调试器停止(“中断”)时,您现在有3个选项:

<强> 1。跳过(F10)

如果按F10,您将步骤 M(x)。调试器将执行此方法,但您不会进入它。在控制台输出中,您将看到4

<强> 2。步入(F11)

如果按F11,调试器将带您 M()方法中,允许您在M()方法内单步(使用F10或F11)。如果按住F11,您将输入其他方法(前提是您有源代码)

第3。退出(Shift-F11)

您可以按Shift-F11步进当前方法的 out ,而不是单步执行一行,然后返回调用方法。在这种情况下,如果您在M()方法内按Shift-F11,则会返回到调用Main()方法。

我希望这更清楚。

P.S。这不是Visual Studio特定的,而是调试的一般概念。使用调试器,您始终可以单步执行指令,即代码行或汇编指令。跳过/进/出是你会在每个调试器中找到的概念,它们都意味着同样的事情。

一些调试器允许您执行其他操作,例如运行到选定行。以下是有关Visual Studio调试功能的更多信息:http://msdn.microsoft.com/en-us/library/y740d9d3.aspx

答案 1 :(得分:0)

这将是特定于IDE的,因此您的问题的目标是过于宽泛。

但总的来说,这就是这些术语的含义。

调试代码时,如果当前行是对函数的调用,请将其称为M(y)。

如果您单步执行,则调试器将开始步入函数M(y)。

如果选择Step Over,那么函数M(y)将被执行,调试器将在调用函数M(y)后停在下一行。

Step Out仅在您已经在M(y)内时才有效。让我们假设您处于M(y)的中间,并且您意识到错误不存在,并且您希望在调用M(y)之后继续执行第一行代码。当你选择Step Out时就是这样。

同样,这将因IDE而异,但根据我的经验(超过11个IDE),这是标准行为。