FWIW a mesma lógica de passo a passo / passo a passo para aplicar ao Xcode / Swift
Honey
Respostas:
270
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():
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}}
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 overe F7para step return.
"então volte para a função de chamada para terminar em 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)?
Mel
1
@ Mel, sim, havia alguma ambiguidade lá (se g(2)ou a g(3)chamada está ativa no momento), então resolvi isso no primeiro parágrafo. Obrigado pela atenção.
precisa
144
Ao depurar linhas de código, aqui estão os cenários comuns:
( Entrar ) Um método está prestes a ser chamado e você deseja depurar o código desse método. Portanto, o próximo passo é entrar nesse método e continuar a depuração passo a passo.
( Passo a passo ) Um método está prestes a ser chamado, mas você não está interessado em depurar essa chamada específica, portanto, você deseja que o depurador execute esse método completamente como uma etapa inteira.
( Retorno da etapa ) Você terminou de depurar este método passo a passo e deseja que o depurador execute o método inteiro até que ele retorne como uma etapa inteira.
( Continuar ) Você deseja que o depurador continue a execução "normal" em vez de passo a passo
( Ponto de interrupção da linha ) Você não se importa como chegou lá, mas se a execução atingir uma linha de código específica, você deseja que o depurador faça uma pausa temporária na execução para poder decidir o que fazer.
O Eclipse possui outros recursos avançados de depuração, mas esses são os fundamentos básicos.
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.
Então, se eu avançar e se a função contiver alguma declaração de impressão, a impressão ocorrerá ou não?
username_4567
2
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.
Respostas:
Considere o seguinte código com o ponteiro de instrução atual (a linha que será executada a seguir, indicada por
->
) naf(x)
linha de entradag()
, tendo sido chamada pelag(2)
linha de entradamain()
:Se você entrar nesse ponto, irá para a
println()
linhaf()
, entrando na chamada de função.Se você passar por esse ponto, você passará para a
f(1)
linhag()
, 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)
ef(1)
voltará à função de chamada para terminarg(3)
emmain()
.O Eclipse (pelo menos Europa, que é o único que tenho útil no momento) usa F5para
step into
, F6parastep over
e F7parastep return
.fonte
g(3)
; emmain()
" <- Você está assumindo que chegou ao seu local atual a partir deg(2)
e, quando terminar, retorna à próxima linhag(3)
?g(2)
ou ag(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.
Veja também
fonte
entrar em cavar em chamadas de método
passar por cima apenas executará a linha e passará para a próxima
fonte
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.
fonte
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.
fonte