Я новичок в FireBug Debugger, кто-нибудь может сказать, что такое шаг, шаг за шагом и выход из него.
Что такое шаг, шаг и шаг в Firebug?
Ответ 1
- Шаг в приведет к тому, что отладчик опустится в любые вызовы методов в текущей строке. Если есть несколько вызовов методов, они будут посещаться в порядке выполнения; если вызовов метода нет, это так же, как и шаг. Это в целом эквивалентно следованию каждой отдельной строке выполнения, как видно интерпретатору.
- Шаг через переходит к следующей строке в вашей текущей области (т.е. переходит к следующей строке), не опускаясь ни на какие вызовы методов на этом пути. Обычно это используется для логики с помощью конкретного метода, не беспокоясь о деталях своих сотрудников и может быть полезно для поиска в какой момент метода нарушены ожидаемые условия.
- Шаг выход продолжается до следующего "возврата" или эквивалента - т.е. до тех пор, пока элемент управления не вернется в предыдущий стек стека. Это обычно используется, когда вы видели все, что вам нужно в этой точке/методе, и хотите, чтобы пузырь в стеке несколько слоев, где фактическое значение действительно используется.
Представьте следующий код, который вводится через 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;
}
Тогда:
- Вступим в вызов
foo
, и текущая строка станетreturn "hi";
в пределахfoo
. - Шаг за шагом проигнорирует тот факт, что вызывается другой метод, и перейдет к строке
return t;
(что позволяет быстро увидеть, что оцениваетсяt
как). - Вывод завершит выполнение оставшейся части метода
bar
, и элемент управления вернется к последней строке методаmain
.
Ответ 2
-
Step Into заставит отладчика перейти к следующему вызову функции и сломается там.
-
Step Over покажет отладчику выполнение следующей функции и последующий разрыв.
-
Step Out сообщит отладчику о завершении текущей функции и разломе.
Ответ 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 over → перейти через подпрограмму, не ожидая снова
- выйти → если вы находитесь в подпрограмме, вы оставите ее без ожидания.