Além do que foi mencionado nas respostas anteriores - ou seja, o recurso de queda no quadro do Eclipse na exibição de depuração , que reinicia a depuração mais cedo no quadro da pilha (mas não reverte os dados globais / estáticos) e o depurador Omniscient , que é um pouco bruto e não muito evoluindo - existem algumas ferramentas baseadas no Eclipse que podem ser usadas para "voltar" no tempo (de execução):
O JIVE estende o depurador Java do Eclipse com a capacidade de registrar os estados do programa. A perspectiva JIVE fornece alguns diagramas UML úteis que são atualizados enquanto o programa está em execução. Esses diagramas fornecem uma visão geral do estado do aplicativo (diagrama de objetos) e do rastreamento de pilha (diagrama de sequência). Você pode consultar o rastreamento memorizado e voltar e avançar no tempo e ver os diagramas correspondentes.
O Diver grava apenas chamadas de método e realmente não registra estados de programa como o JIVE. Todo evento de chamada de método é armazenado para recuperação e análise posteriores. Ele estende as configurações de Java Run and Debug principalmente para especificar filtros. O rastreamento pode ser pausado / retomado / filtrado em tempo de execução. Uma vez gravada, a perspectiva do Diver pode exibi-la em um diagrama de seqüência interativo.
JIVE e Diver são projetos de código aberto emitidos a partir de pesquisas acadêmicas. Em novembro de 2012, os dois projetos estão ativos.
O Chronon é um produto comercial, mas eles têm licenças gratuitas para estudantes e projetos de código aberto. Pelo que está sendo reivindicado em seu site, é provavelmente o gravador mais abrangente, pois é capaz de reproduzir o histórico gravado, avançar e retroceder, permitindo, como dizem, a depuração de viagens no tempo. O Eclipse também não é necessário para a gravação.
Todos esses plugins são bastante ambiciosos em recursos, portanto, é melhor ter uma boa máquina de especificações e usar seu recurso de filtro. Um requisito definido para executá-los com êxito é estender o espaço de heap no eclipse.ini .
No meu caso, tentei usar o JIVE e o Diver para depurar um programa de análise XML, mas sempre acabava congelando o eclipse devido à falta de recursos. O Diver pode ser complicado para rodar no Linux de 64 bits , ele funciona no ubuntu 32bit e possivelmente em outras distribuições de 32 bits usando essas dicas . O Diver funciona no Windows, melhor ainda em uma JVM do Windows de 64 bits + 64 bits, caso contrário, você estará limitado a um espaço de heap máximo de 1,3 a 1,6 Gb em janelas de 32 bits . O JIVE funciona muito bem no meu Linux de 64 bits e parece funcionar bem em outras plataformas.