Dissertação

{en_GB=Automatic Bug Detection in R - Approaching R debugging differently} {} EVALUATED

{pt=Tal como em grande parte das linguagens de programação, as capacidades de depuração disponíveis para o R (quer seja através dos mecanismos nativos ou via aplicações terceiras) nao tiveram grandes avanços nas últimas décadas. Posto isto, o paradigma de depuração continua o mesmo desde o lançamento oficial da linguagem: definir um ponto paragem, analisar cada instrução para assegurar se está correta e iterar sobre todas elas até que o problema seja encontrado. Este paradigma é totalmente linear relativamente ao tempo (para estar num determinado ponto da execução, executar as n-1 instruções é obrigatório). A Automatic Bug Detection in R implementa um paradigma diferente: depuração intemporal. Assim, a ferramenta fornece um grafo gerado a partir dos dados colecionados (durante a execução), permitindo analisar, em qualquer altura, cada instrução executada. Isto significa que, para analisar a enésima instrução, reconstruir o contexto de execução, executando as n-1 últimas instruções, não é necessário pois os dados do processamento das instruções já haviam sido guardados na primeira execução. Conceptualmente, esta abordagem implica algumas penalizações de desempenho e então, no geral, a velocidade de execução diminuirá (comparando com o R nativo) devido às instruções adicionadas. A ferramenta ABD_tool providencia todas as suas funcionalidades com uma penalização de desempenho consideravelmente baixa/média. Por exemplo, um ciclo for com 1 milhão de iterações e múltiplas instruções IF (secção 5.6), consome mais 1 minuto que o R nativo, mas oferece a capacidade de analisar cada iteração do ciclo separadamente, bem como as instruções executadas em cada iteração, quando desejado/necessário. , en=As in a wide variety of programming languages, the debugging capabilities available of R (either through its native mechanisms or via third-party applications) have not seen many advances in the past decades. Due to this lack of innovation, the debug paradigm remains the same since the language was officially launched: define a desired stopping point, analyze each instruction to ensure its correctness and iterate through the instructions until the problem is found. This paradigm constitutes a completely linear debugging process relative to time. The Automatic Bug Detection in R implements a completely different paradigm (non-linear timewise): timeless debugging. With this, it provides to its users an execution graph based on the data collected during the execution, allowing them to analyze each executed instruction at any time (either during or post execution). This means that, to analyze the nth instruction, rebuilding the execution context (by executing the nth-1 instructions) is not required because the data regarding those instructions was already collected and persisted in the first run. Conceptually, this type of approach has inherent overheads which means that the overall performance (when compared with a clean R interpreter) downgrades, due to the extra instructions. The ABD_tool provides its complete functionalities with low/medium overheads. For example, a 1 million iterations for loop with multiple branches inside it (section 5.6), takes 1 minute more than the clean R but offers the capability of analyzing each iteration separately, and the executed instructions within them on-demand.}
{pt=R, Depuração, Depuração intemporal, Depuração dinâmica, en=R, Debugging, Timeless debugging, Dynamic debugging}

Janeiro 20, 2021, 9:0

Orientação

ORIENTADOR

João Coelho Garcia

Departamento de Engenharia Informática (DEI)

Professor Auxiliar