Ao usar o depurador Java no Intellij, o que “Drop Frame” significa?

94

Eu estava usando o depurador Java no Intellij 8 e notei um botão rotulado "soltar quadro", alguém sabe a que propósito isso serve? Como / por que isso seria usado / útil?

Benstpierre
fonte

Respostas:

128

A pilha de chamadas de seu aplicativo pode ser visualizada no depurador. Usando a funcionalidade "Soltar quadro", você pode "retroceder" para um quadro de pilha anterior, de certa forma, voltando no tempo. Isso pode ser útil para entrar novamente em uma função se você perdeu um ponto crítico que gostaria de ver novamente.

Como o nome "Stack Frame" sugere, as alterações que já foram feitas no estado global (como variáveis ​​estáticas, alterações nos valores dos campos e assim por diante) não serão desfeitas, apenas as variáveis ​​locais são redefinidas. Isso pode levar a um caminho de execução diferente daquele que originalmente levou ao seu ponto de interrupção. Você precisa estar ciente disso - geralmente considero um recurso útil explorar diferentes caminhos de execução sem ter que reiniciar o aplicativo ou um processo específico e demorado que levou à pilha atual. Combinado com a mudança de valores de variáveis ​​também disponíveis por meio do depurador, você pode fazer todos os tipos de coisas interessantes.

Observe que, é claro, quaisquer efeitos colaterais que possam ter ocorrido - por exemplo, tráfego de rede, manipulação de arquivos, saída de console, etc. - não podem ser retrocedidos.

Daniel Schneller
fonte
14

Soltar quadro no depurador exibe o quadro de pilha atual e devolve o controle ao método de chamada, redefinindo todas as variáveis ​​locais. Isso é muito útil para percorrer repetidamente uma função, mas esteja avisado: as mutações de campo ou mudanças de estado global permanecerão.

Veja mais informações aqui .

Jorge Ferreira
fonte
7

Eliminar quadros da pilha usando o depurador essencialmente permite "retroceder" a execução de seu aplicativo para chegar a um estado anterior. Variáveis ​​fora do quadro de pilha não são revertidas.

Como observação lateral, acredito que esse recurso é chamado de "Soltar para Quadro" no Eclipse, mas serve ao mesmo propósito.

Dolph
fonte