Respostas:
Considere o seguinte código com o ponteiro de instrução atual (a linha que será executada a seguir, indicada por ->
) na f(x)
linha de entrada g()
, tendo sido chamada pela g(2)
linha de entrada main()
:
public class testprog {
static void f (int x) {
System.out.println ("num is " + (x+0)); // <- STEP INTO
}
static void g (int x) {
-> f(x); //
f(1); // <----------------------------------- STEP OVER
}
public static void main (String args[]) {
g(2);
g(3); // <----------------------------------- STEP OUT OF
}
}
Se você entrar nesse ponto, irá para a println()
linha f()
, entrando na chamada de função.
Se você passar por esse ponto, você passará para a f(1)
linha g()
, passando por cima da chamada de função.
Outro recurso útil dos depuradores é a saída ou retorno da etapa . Nesse caso, um retorno de etapa basicamente o guiará pela função atual até você voltar um nível acima. Em outras palavras, ele avançará f(x)
e f(1)
voltará à função de chamada para terminar g(3)
em main()
.
O Eclipse (pelo menos Europa, que é o único que tenho útil no momento) usa F5para step into
, F6para step over
e F7para step return
.
g(3)
; em main()
" <- Você está assumindo que chegou ao seu local atual a partir de g(2)
e, quando terminar, retorna à próxima linha g(3)
?
g(2)
ou a g(3)
chamada está ativa no momento), então resolvi isso no primeiro parágrafo. Obrigado pela atenção.
Ao depurar linhas de código, aqui estão os cenários comuns:
O Eclipse possui outros recursos avançados de depuração, mas esses são os fundamentos básicos.
entrar em cavar em chamadas de método
passar por cima apenas executará a linha e passará para a próxima
Você não pode passar pelos detalhes do método usando a etapa acima. Se você quiser pular a linha atual, poderá usar o passo a passo e pressionar F6apenas uma vez para passar para a próxima linha. E se você acha que há algo errado no método, use F5para examinar os detalhes.
Entrar na próxima expressão na linha atualmente selecionada a ser executada é invocada e a execução é suspensa na próxima linha executável no método invocado.
Passar sobre a linha atualmente selecionado é executado e suspende na próxima linha executável.