什么是 Firebug 中的 step into、step out 和 step over? [复制]

Posted

技术标签:

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

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

【问题讨论】:

嗯,你只是问如何使用调试器?如果是这样,也许试试 developerfusion.com/article/33/debugging/4 。我认为这可能会帮助您了解这个想法。 @Gordon Worley - 你可能错过了这个网站的目的。 【参考方案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 -> 如果你在子例程中,你将离开它而不再等待

【讨论】:

以上是关于什么是 Firebug 中的 step into、step out 和 step over? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Intellij IDEA调试功能使用总结(step over / step into / force step into/step out等)

这道题固然可以选A 但为何不能选D 明明有短语 step into 意思即为:善待身体是你趋近于精神和情绪健康的

为啥在 Android 应用程序中击中断点后禁用“Step Into (F5)”和“Step Over (F6)”?

转:libc6-dbg libc库调试的时候需要安装该库获得debug information 才能step into

IDEA单步断点调试Step Into/Step Out/Step Over/Run to Cursor

IDEA单步断点调试Step Into/Step Out/Step Over/Run to Cursor