Automatic inspection of program state in an uncooperative environment

Detalhes bibliográficos
Ano de defesa: 2021
Autor(a) principal: José Wesley de Souza Magalhães
Orientador(a): Não Informado pela instituição
Banca de defesa: Não Informado pela instituição
Tipo de documento: Dissertação
Tipo de acesso: Acesso aberto
Idioma: eng
Instituição de defesa: Universidade Federal de Minas Gerais
Brasil
ICEX - INSTITUTO DE CIÊNCIAS EXATAS
Programa de Pós-Graduação em Ciência da Computação
UFMG
Programa de Pós-Graduação: Não Informado pela instituição
Departamento: Não Informado pela instituição
País: Não Informado pela instituição
Palavras-chave em Português:
Link de acesso: http://hdl.handle.net/1843/40072
Resumo: O estado interno de um programa é formado pelos valores que tal programa manipula. Estes valores são armazenados na pilha de chamadas de funções, na heap, ou em memória estática. A habilidade de inspecionar o estado interno de um programa é útil para propósitos de depuração e verificação. Entretanto, não existe técnica geral para inserir pontos de inspeção em linguagens com um sistema de tipos não seguros, como C ou C++. A dificuldade vem da necessidade de percorrer o grafo de memória em um assim chamado ambiente não cooperativo. Nesta dissertação, uma técnica automática para lidar com esse problema é proposta. Nós introduzimos uma transformação estática de programa para reportar o seu estado interno. Nossa técnica foi implementada utilizando Low Level Virtual Machine (LLVM). É possível ajustar a granularidade dos pontos de inspeção, trocando precisão por desempenho. Nesta dissertação, nós demonstramos como utilizar pontos de inspeção para depurar otimizações de compiladores; para inserir código de verificação em benchmarks; e para visualizar estruturas de dados.