AgradecimentosO professor Fabio Koné um orientador no sentido mais verdadeiro da palavra. Sua sábia orientação teve um efeito inegável, tanto sobre o alcance deste trabalho, quanto sobre as minhas visões da ciência da computação e de como conduzir uma pesquisa científica, de modo geral. Agradeço imensamente por todos esses ensinamentos, pelo apoio durante este longo mestrado e,é claro, pela amizade. Sinto que meu futuro como pesquisador será muito mais rico por causa disso.O trabalho de servir em uma bancaé muitas vezes uma tarefaárdua e sem agradecimentos.Gostaria, portanto, de agradecer ao professor Alan Mitchell Durham, de quem aprendi muito durante a graduação, e ao professor Renato Cerqueira, colaborador de longa data do nosso grupo de pesquisa, pela gentileza de participarem em minha banca de mestrado. Tenho certeza de que ambos farão contribuições importantes a este trabalho.Não seria justo deixar de reconhecer as contribuições dos professores Marco Dimas Gubitoso e Francisco Reverbel para a formação e o amadurecimento de muitas das principais idéias deste trabalho. Agradeço pelas horas de discussões estimulantes, pela generosidade e pela amizade. Agradeço duplamente ao Professor Marco Dimas Gubitoso, por ter aceito ser meu orientador de programa no início deste mestrado. Seu apoio e conselhos foram essenciais para que eu sentisse segurança ao me decidir por este tópico.Agradeço aos meus pais, Cristina eÉlio Mega, e ao meu irmão, Stefano Mega, pela paciência e pelo apoio, não só durante o decorrer deste mestrado, mas sempre.Agradeçoà minha namorada e amiga Juliana Teixeira Fiquer pela paciência inesgotável nos finaisde-samana e pelo carinho, sem os quais minha vida teria sido muito mais difícil durante essesúltimos anos.Agradeço a todos os amigos que tornaram essa minha passagem pelo IME tão especial, interessante e divertida. Agradeço principalmente aos companheiros de laboratório presença e ajuda, direta e indireta, foram muito importantes para mim.Finalmente, agradeço ao meu grande amigo Daniel Cordeiro, pela eterna disponibilidade em ler os manuscritos e versões finais dos meus artigos, pelas sugestões dadas na versão preliminar deste texto e,é claro, pela amizade.
Muito Obrigado!
ResumoDepurar sistemas distribuídos continua uma tarefa difícil, mesmo após 30 anos de pesquisa intensa. Embora essa situação possa ser parcialmente atribuída à complexidade das execuções concorrentes, o rápido passo de desenvolvimento das plataformas e tecnologias para computação distribuída também carrega a sua parcela de culpa, por encurtar a vida de muitas ferramentas potencialmente úteis. Neste trabalho, apresentamos uma análise dos principais problemas, técnicas e ferramentas ligados à depuração de sistemas concorrentes e discutidos na literatura. Baseados nessa análise, desenvolvemos e apresentamos uma nova técnica, simples e portátil, que pode ser aplicada a sistemas distribuídos que utilizam chamadas síncronas e bloqueantes. Essa técnica, concebida para sobreviver à heterogeneidade, é validada por meio da implementaç...