FWIW та же логика пошагового / пошагового применения применяется к Xcode / Swift
Honey
Ответы:
270
Рассмотрим следующий код с указателем текущей инструкции (строка, которая будет выполняться далее, обозначена ->) в f(x)строке g(), вызванной g(2)строкой в main():
publicclass testprog {staticvoid f (int x){System.out.println ("num is "+(x+0));// <- STEP INTO}staticvoid g (int x){-> f(x);//
f(1);// <----------------------------------- STEP OVER}publicstaticvoid main (String args[]){
g(2);
g(3);// <----------------------------------- STEP OUT OF}}
Если вам нужно войти в этот момент, вы перейдете к println()строке f(), входя в вызов функции.
Если вам нужно перешагнуть через эту точку, вы перейдете к f(1)строке g(), переступив через вызов функции.
Еще одна полезная особенность отладчиков является шагом из или шаг возврата. В этом случае пошаговый возврат в основном проведет вас через текущую функцию, пока вы не вернетесь на один уровень вверх. Другими словами, он пройдет f(x)и f(1)затем вернется к вызывающей функции, чтобы в конечном итоге g(3)вmain() .
«Затмение» (по крайней мере, «Европа», единственное, что мне сейчас удобно) использует F5для step into, F6для step overи F7для step return.
«затем обратно к вызывающей функции в конечном итоге на g(3), в main()» <- Вы предполагая , что вы получили ваше текущее местоположение с g(2)и как только вы все сделали вы вернуться к своей следующей строке g(3)?
Мед
1
@Honey, да, есть некоторая двусмысленность там (независимо от того g(2)или g(3)вызова активна в данный момент) , так что я очищен , что в первом абзаце. Спасибо за внимание.
paxdiablo
144
При отладке строк кода, вот обычные сценарии:
( Шаг в ) Метод должен быть вызван, и вы хотите отладить код этого метода, поэтому следующий шаг - перейти к этому методу и продолжить пошаговую отладку.
( Шаг за шагом ) Метод должен быть вызван, но вы не заинтересованы в отладке этого конкретного вызова, поэтому вы хотите, чтобы отладчик полностью выполнил этот метод как один полный шаг.
( Возврат шага ) Вы закончили пошаговую отладку этого метода, и вы просто хотите, чтобы отладчик запускал весь метод, пока он не вернется как один полный шаг.
( Резюме ) Вы хотите, чтобы отладчик возобновил «нормальное» выполнение вместо пошагового
( Точка останова линии ) Вам все равно, как он туда попал, но если выполнение достигает определенной строки кода, вы хотите, чтобы отладчик временно приостановил выполнение, чтобы вы могли решить, что делать.
Eclipse имеет другие расширенные функции отладки, но это основные принципы.
Вы не можете пройти через детали метода, используя шаг. Если вы хотите пропустить текущую строку, вы можете использовать шаг за шагом, тогда вам нужно только нажать F6только один раз, чтобы перейти к следующей строке. И если вы думаете, что в методе что-то не так, используйте F5для изучения деталей.
Так что, если я сделаю шаг, и если функция содержит какое-то утверждение печати, произойдет печать или нет?
username_4567
2
Step Into Вызывается следующее выражение в текущей выбранной строке, которая должна быть выполнена, и выполнение приостанавливается на следующей исполняемой строке в вызываемом методе.
Шаг за шагом Выбранная в данный момент строка выполняется и приостанавливается на следующей исполняемой строке.
Ответы:
Рассмотрим следующий код с указателем текущей инструкции (строка, которая будет выполняться далее, обозначена
->
) вf(x)
строкеg()
, вызваннойg(2)
строкой вmain()
:Если вам нужно войти в этот момент, вы перейдете к
println()
строкеf()
, входя в вызов функции.Если вам нужно перешагнуть через эту точку, вы перейдете к
f(1)
строкеg()
, переступив через вызов функции.Еще одна полезная особенность отладчиков является шагом из или шаг возврата. В этом случае пошаговый возврат в основном проведет вас через текущую функцию, пока вы не вернетесь на один уровень вверх. Другими словами, он пройдет
f(x)
иf(1)
затем вернется к вызывающей функции, чтобы в конечном итогеg(3)
вmain()
.«Затмение» (по крайней мере, «Европа», единственное, что мне сейчас удобно) использует F5для
step into
, F6дляstep over
и F7дляstep return
.источник
g(3)
, вmain()
» <- Вы предполагая , что вы получили ваше текущее местоположение сg(2)
и как только вы все сделали вы вернуться к своей следующей строкеg(3)
?g(2)
илиg(3)
вызова активна в данный момент) , так что я очищен , что в первом абзаце. Спасибо за внимание.При отладке строк кода, вот обычные сценарии:
Eclipse имеет другие расширенные функции отладки, но это основные принципы.
Смотрите также
источник
step in будет копаться в вызовах методов
step over просто выполнит строку и перейдет к следующей
источник
Вы не можете пройти через детали метода, используя шаг. Если вы хотите пропустить текущую строку, вы можете использовать шаг за шагом, тогда вам нужно только нажать F6только один раз, чтобы перейти к следующей строке. И если вы думаете, что в методе что-то не так, используйте F5для изучения деталей.
источник
Step Into Вызывается следующее выражение в текущей выбранной строке, которая должна быть выполнена, и выполнение приостанавливается на следующей исполняемой строке в вызываемом методе.
Шаг за шагом Выбранная в данный момент строка выполняется и приостанавливается на следующей исполняемой строке.
источник