【问题标题】:What is step into, step out and step over in Firebug? [duplicate]什么是 Firebug 中的 step into、step out 和 step over? [复制]
【发布时间】:2011-07-20 11:39:56
【问题描述】:

我是 FireBug Debugger 的新手,谁能说出什么是步入、跨步和退出

【问题讨论】:

  • 嗯,你只是问如何使用调试器?如果是这样,也许试试 developerfusion.com/article/33/debugging/4 。我认为这可能会帮助您了解这个想法。
  • @Gordon Worley - 你可能错过了这个网站的目的。

标签: javascript firebug javascript-debugger


【解决方案1】:
  • 步骤 into 将导致调试器下降到当前行上的任何方法调用。如果有多个方法调用,它们会按执行顺序被访问;如果没有方法调用,这与 step over 相同。这大致相当于按照解释器所看到的每个单独的执行行。
  • 步骤 over 继续到当前范围内的下一行(即转到下一行),而不会在途中下降到任何方法调用。这通常用于通过特定方法遵循逻辑,而不用担心其协作者的细节,并且可以用于查找方法中的哪个点违反了预期条件。
  • 步骤 out 继续进行,直到下一个“返回”或等效项 - 即直到控制返回到前一个堆栈帧。这通常用于当您在 this 点/方法上看到了所有您需要的内容,并且想要将堆栈向上冒泡几层到实际使用该值的位置。

想象以下代码,它通过main() 输入,现在位于bar 的第一行:

function main() {
   val s = foo();
   bar(s);
}

function foo() {
   return "hi";
}

function bar(s) {
   val t = s + foo(); // Debugger is currently here
   return t;
}

然后:

  • Step into 将进入foo 调用,然后当前行将成为foo 中的return "hi"; 行。
  • 跳过将忽略正在调用另一个方法的事实,并将继续执行 return t; 行(让您快速查看 t 的评估结果)。
  • Step out 将完成 bar 方法的其余部分的执行,控制将返回到 main 方法的最后一行。

【讨论】:

  • 谢谢,您的解释是这里唯一对我有意义的解释。如果我知道“步入”与“正常执行”大致相同,我会更快地理解这个概念。其他两个也一样。
  • Firebug 在递归过程中显然没有正确退出 - 我发现如果我将几个帧递归到一个函数的深处并且我尝试退出,它会退出所有这些帧而不是一个,这对我来说非常令人沮丧和无益。
  • Step out 继续直到下一个“return”或等效项不明确。如果当前堆栈帧调用具有返回的另一个函数,它并不总是“下一个”返回...
  • 非常简单。谢谢!
  • 来到这里寻找一个简洁的答案,并找到它。谢谢。
【解决方案2】:
  • Step Into 将导致调试器进入下一个函数调用并在那里中断。

  • Step Over 将告诉调试器执行下一个函数并在之后中断。

  • Step Out 将告诉调试器完成当前函数并在它之后中断。

【讨论】:

  • +1 以如此简单但技术性的方式讲述
  • 感谢您明确指出跨步仍然执行下一个函数,它只是没有中断。
【解决方案3】:

简短的版本是,step into 带您进入当前行上正在调用的函数(假设正在调用一个函数),step out 带您回到您决定 step into 函数时的位置, 和 step over 只是移动到下一行代码。例如:

window.someFunction = function() {
    var x = 10;    //step over to move to the next line
                   //step out to return to the line after where 'someFunction()' was called
                   //step into not available
    var y = 20;
    return x * y;
};

//set breakpoint here
var x = 7;   //step over to execute this line and move to the 
             //next (step into and step out not available)
x += someFunction();  //step over to move to the next line
                      //step into to move to someFunction() (above)
                      //step out not available
alert(x);    //step over to display the alert
             //step out and (probably) step into not available

【讨论】:

    【解决方案4】:
    • step into -> 进入子程序并等待下一个动作
    • 跳过->跳过子程序而不再等待
    • step out -> 如果你在子例程中,你将离开它而不再等待

    【讨论】:

      猜你喜欢
      • 2019-02-21
      • 2012-12-07
      • 2011-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-20
      • 2020-04-20
      • 2018-03-13
      相关资源
      最近更新 更多