Whyline
Whyline para Java realmente me impressionou quando o vi. É uma ferramenta de análise dinâmica que permite fazer perguntas sobre a saída do programa, e não apenas texto, mas também gráficos. Por exemplo, você pode perguntar "por que essa linha era vermelha?" ou "por que o método de pintura não foi chamado?"
Ele funciona instrumentando seu programa e gravando uma corrida. Por exemplo, suponha que haja um erro que você possa reproduzir. Você instrumenta seu programa com o Whyline, executa o programa no Whyline para reproduzir o erro e, quando sai do programa, pode usar o Whyline para inspecionar o histórico de execução.
Essa gravação e reprodução não são novas, mas como a Whyline as implementa é muito boa. Você pode visualizar o histórico de acordo com eventos específicos (por exemplo, concentrando-se apenas nos eventos de arrastar o mouse ou apenas nos eventos de pressionamento de tecla). Ele também associa a saída com a parte do programa que foi impressa, para que você possa navegar da saída para o código.
Para funcionar, ele usa a divisão do programa, para que você possa se concentrar nas partes do código que são realmente relevantes. A CMU agora possui uma patente e não sei quais são seus planos, mas espero que possamos ver mais disso em produção. É um porco da memória, mas isso é provável porque é um protótipo e pode melhorar.
Você deve ver a demonstração on-line, mas também deve experimentá-la para obter a experiência completa. As demos online subestimam a ideia.