FWIW tę samą logikę krok po kroku / krok w kierunku stosuje się do Xcode / Swift
Honey
Odpowiedzi:
270
Rozważ następujący kod z bieżącym wskaźnikiem instrukcji (linia, która zostanie wykonana następnie, oznaczona przez ->) w f(x)linii w g(), ponieważ została wywołana przez g(2)linię w 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}}
Jeśli było krok w tym momencie, można przejść do println()linii f(), wchodząc do wywołania funkcji.
Jeśli były do kroku na tym punkcie, można przejść do f(1)linii g(), depcząc po wywołaniu funkcji.
Kolejną przydatną funkcją debuggerów jest wyjście lub powrót. W takim przypadku krok powrotny będzie zasadniczo przeprowadzał cię przez bieżącą funkcję, dopóki nie wrócisz o jeden poziom wyżej. Innymi słowy, będzie to krok po kroku f(x)i f(1), a następnie wycofać się do funkcji wywołującej skończyć się g(3)w main().
Zaćmienie (przynajmniej Europa, która w tej chwili jest jedyną, którą mam pod ręką) używa F5dla step into, F6dla step overi F7dla step return.
”, a następnie wróć do funkcji wywołującej, aby zakończyć się na g(3); w main()„ <- Czy zakładasz, że dotarłeś do bieżącej lokalizacji zg(2) a kiedy skończysz możesz powrócić do następnego wiersza g(3)?
Honey
1
@Honey, tak, to był jakiś tam dwuznaczność (czy g(2)lub g(3)połączenie jest aktualnie aktywne) więc mam wyczyszczone, że w pierwszym akapicie. Dzięki za heads-upy.
paxdiablo
144
Podczas debugowania wierszy kodu, oto typowe scenariusze:
( Step Into ) Niedługo zostanie wywołana metoda, a Ty chcesz debugować kod jej metody, więc następnym krokiem jest przejście do tej metody i kontynuowanie debugowania krok po kroku.
( Krok ponad ) Niedługo zostanie wywołana metoda, ale nie jesteś zainteresowany debugowaniem tego konkretnego wywołania, więc chcesz, aby debugger wykonał tę metodę całkowicie jako jeden krok.
( Return Return ) Skończyłeś debugować tę metodę krok po kroku i chcesz, aby debugger uruchomił całą metodę, dopóki nie zwróci się jako jeden krok.
( Wznów ) Chcesz, aby debugger wznawiał „normalne” wykonywanie zamiast krok po kroku
( Punkt przerwania linii ) Nie obchodzi cię, jak się tam dostał, ale jeśli wykonanie osiągnie określoną linię kodu, chcesz, aby debugger tymczasowo wstrzymał wykonanie, abyś mógł zdecydować, co zrobić.
Eclipse ma inne zaawansowane funkcje debugowania, ale są to podstawowe podstawy.
Nie możesz przejść do szczegółów tej metody, używając kroku krok po kroku. Jeśli chcesz pominąć bieżącą linię, możesz użyć kroku wstecz, wystarczy nacisnąć F6tylko raz, aby przejść do następnej linii. A jeśli uważasz, że w metodzie jest coś nie tak, skorzystaj z niej, F5aby sprawdzić szczegóły.
Więc jeśli zrobię krok do przodu i jeśli funkcja zawiera instrukcję print, czy drukowanie nastąpi, czy nie?
nazwa_użytkownika_4567
2
Krok do następnego Wywołane zostanie następne wyrażenie w aktualnie wybranej linii do wykonania, a wykonanie zawiesza się w kolejnej linii wykonywalnej w wywoływanej metodzie.
Step Over Aktualnie wybrana linia jest wykonywana i zawiesza się w następnej linii wykonywalnej.
Odpowiedzi:
Rozważ następujący kod z bieżącym wskaźnikiem instrukcji (linia, która zostanie wykonana następnie, oznaczona przez
->
) wf(x)
linii wg()
, ponieważ została wywołana przezg(2)
linię wmain()
:Jeśli było krok w tym momencie, można przejść do
println()
liniif()
, wchodząc do wywołania funkcji.Jeśli były do kroku na tym punkcie, można przejść do
f(1)
liniig()
, depcząc po wywołaniu funkcji.Kolejną przydatną funkcją debuggerów jest wyjście lub powrót. W takim przypadku krok powrotny będzie zasadniczo przeprowadzał cię przez bieżącą funkcję, dopóki nie wrócisz o jeden poziom wyżej. Innymi słowy, będzie to krok po kroku
f(x)
if(1)
, a następnie wycofać się do funkcji wywołującej skończyć sięg(3)
wmain()
.Zaćmienie (przynajmniej Europa, która w tej chwili jest jedyną, którą mam pod ręką) używa F5dla
step into
, F6dlastep over
i F7dlastep return
.źródło
g(3)
; wmain()
„ <- Czy zakładasz, że dotarłeś do bieżącej lokalizacji zg(2)
a kiedy skończysz możesz powrócić do następnego wierszag(3)
?g(2)
lubg(3)
połączenie jest aktualnie aktywne) więc mam wyczyszczone, że w pierwszym akapicie. Dzięki za heads-upy.Podczas debugowania wierszy kodu, oto typowe scenariusze:
Eclipse ma inne zaawansowane funkcje debugowania, ale są to podstawowe podstawy.
Zobacz też
źródło
step into wykopie wywołania metod
step over po prostu wykona linię i przejdzie do następnego
źródło
Nie możesz przejść do szczegółów tej metody, używając kroku krok po kroku. Jeśli chcesz pominąć bieżącą linię, możesz użyć kroku wstecz, wystarczy nacisnąć F6tylko raz, aby przejść do następnej linii. A jeśli uważasz, że w metodzie jest coś nie tak, skorzystaj z niej, F5aby sprawdzić szczegóły.
źródło
Krok do następnego Wywołane zostanie następne wyrażenie w aktualnie wybranej linii do wykonania, a wykonanie zawiesza się w kolejnej linii wykonywalnej w wywoływanej metodzie.
Step Over Aktualnie wybrana linia jest wykonywana i zawiesza się w następnej linii wykonywalnej.
źródło