Execução de funções parciais em linguagem de programação C

Detalhes bibliográficos
Autor(a) principal: Marcus Rodrigues de Araújo
Data de Publicação: 2017
Tipo de documento: Dissertação
Idioma: por
Título da fonte: Repositório Institucional da UFMG
Texto Completo: http://hdl.handle.net/1843/32056
Resumo: Atualmente a comunidade conta com diversos programas poderosos para a realização de análises dinâmicas. Exemplos desses analisadores são: Valgrind, útil para realizar diversos tipos de verificação em relação à execução de programas; e aprof, usada para auxiliar na busca por ineficiências assintóticas. Entretanto, essas ferramentas esperam receber como entrada um programa executável. Isso pode dificultar a tarefa de desenvolvedores em analisar trechos de código específicos, como funções. Considerando essa dificuldade, nesta dissertação são apresentadas um conjunto de técnicas que, juntas, possibilitam a execução automática de uma função escrita na linguagem C de forma isolada. Em especial, focamos em métodos que lidam com acessos a arranjos e é tido como objetivo que, ao ser executada, a função alvo não deve gerar acessos de memória inválidos causados pelos dados fornecidos para executá-la. Com as ideias apresentadas aqui, foi construída uma ferramenta, amazonc, que possibilita a execução de funções em C de forma isolada. Experimentos realizados com as funções núcleos (kernels) do Polybench reforçam a eficácia do método apresentado. Juntamente com aprof, amazonc possibilitou a reconstrução das curvas de complexidade assintóticas de todos os kernels considerados. Além disso, as reconstruções das curvas foram feitas sem que Valgrind apontasse nenhum erro de acessos inválidos a memória.
id UFMG_30e8d1867e64d53312777509719ca636
oai_identifier_str oai:repositorio.ufmg.br:1843/32056
network_acronym_str UFMG
network_name_str Repositório Institucional da UFMG
repository_id_str
spelling Fernando Magno Quintão Pereirahttp://lattes.cnpq.br/4608001746330875Edson Marchetti da SilvaRodolfo Sérgio Ferreira de Resendehttp://lattes.cnpq.br/8125776158198770Marcus Rodrigues de Araújo2020-01-20T19:16:22Z2020-01-20T19:16:22Z2017-11-30http://hdl.handle.net/1843/32056Atualmente a comunidade conta com diversos programas poderosos para a realização de análises dinâmicas. Exemplos desses analisadores são: Valgrind, útil para realizar diversos tipos de verificação em relação à execução de programas; e aprof, usada para auxiliar na busca por ineficiências assintóticas. Entretanto, essas ferramentas esperam receber como entrada um programa executável. Isso pode dificultar a tarefa de desenvolvedores em analisar trechos de código específicos, como funções. Considerando essa dificuldade, nesta dissertação são apresentadas um conjunto de técnicas que, juntas, possibilitam a execução automática de uma função escrita na linguagem C de forma isolada. Em especial, focamos em métodos que lidam com acessos a arranjos e é tido como objetivo que, ao ser executada, a função alvo não deve gerar acessos de memória inválidos causados pelos dados fornecidos para executá-la. Com as ideias apresentadas aqui, foi construída uma ferramenta, amazonc, que possibilita a execução de funções em C de forma isolada. Experimentos realizados com as funções núcleos (kernels) do Polybench reforçam a eficácia do método apresentado. Juntamente com aprof, amazonc possibilitou a reconstrução das curvas de complexidade assintóticas de todos os kernels considerados. Além disso, as reconstruções das curvas foram feitas sem que Valgrind apontasse nenhum erro de acessos inválidos a memória.Currently the computer science community has several powerful programs for performing dynamic analysis. Examples of these analyzers are: Valgrind, useful for performing several types of checks related to the running of programs; and aprof, used to aid in the search for asymptotic inefficiencies. However, these tools expect to receive as an input an executable program. This fact complicates the analysis of specific code snippets, such as functions. Considering this difficulty, in this dissertation we present a set of techniques that, together, enable us to execute isolated functions written in C language automatically. In particular, we focus on methods that deal with access to arrays by indexing. Besides that, it is our goal that, when executed, a target function does not contain invalid memory accesses caused by the data automatically generated to test it. With the ideas presented here, we developed a tool, amazonc, which enable us to execute functions in C isolated from the rest of the code. Experiments performed with the kernels of the Polybench benchmarks suite reinforce the effectiveness of the method presented. Together with aprof, amazonc was able to reconstruct the asymptotic complexity curves of all core functions in that benchmark. In addition, the process of reconstructing these curves did not lead to memory errors, as Valgrind has certified.CNPq - Conselho Nacional de Desenvolvimento Científico e TecnológicoporUniversidade Federal de Minas GeraisPrograma de Pós-Graduação em Ciência da ComputaçãoUFMGBrasilICEX - INSTITUTO DE CIÊNCIAS EXATASComputação — TesesCompiladores (Computadores) — Teses.Linguagens de programação (Computadores) — Teses.Execução automáticaAnálise estáticaAnálise dinâmicaLinguagem CExecução de funções parciais em linguagem de programação Cinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisinfo:eu-repo/semantics/openAccessreponame:Repositório Institucional da UFMGinstname:Universidade Federal de Minas Gerais (UFMG)instacron:UFMGLICENSElicense.txtlicense.txttext/plain; charset=utf-82119https://repositorio.ufmg.br/bitstream/1843/32056/2/license.txt34badce4be7e31e3adb4575ae96af679MD52ORIGINALdissertacao27112019.pdfdissertacao27112019.pdfapplication/pdf1629045https://repositorio.ufmg.br/bitstream/1843/32056/1/dissertacao27112019.pdf9473177a2f0031bbaac89e00aea860e7MD51TEXTdissertacao27112019.pdf.txtdissertacao27112019.pdf.txtExtracted texttext/plain138895https://repositorio.ufmg.br/bitstream/1843/32056/3/dissertacao27112019.pdf.txt7d69642c69acb22dd378407fc0e2422bMD531843/320562020-01-21 03:24:03.876oai:repositorio.ufmg.br:1843/32056TElDRU7Dh0EgREUgRElTVFJJQlVJw4fDg08gTsODTy1FWENMVVNJVkEgRE8gUkVQT1NJVMOTUklPIElOU1RJVFVDSU9OQUwgREEgVUZNRwoKQ29tIGEgYXByZXNlbnRhw6fDo28gZGVzdGEgbGljZW7Dp2EsIHZvY8OqIChvIGF1dG9yIChlcykgb3UgbyB0aXR1bGFyIGRvcyBkaXJlaXRvcyBkZSBhdXRvcikgY29uY2VkZSBhbyBSZXBvc2l0w7NyaW8gSW5zdGl0dWNpb25hbCBkYSBVRk1HIChSSS1VRk1HKSBvIGRpcmVpdG8gbsOjbyBleGNsdXNpdm8gZSBpcnJldm9nw6F2ZWwgZGUgcmVwcm9kdXppciBlL291IGRpc3RyaWJ1aXIgYSBzdWEgcHVibGljYcOnw6NvIChpbmNsdWluZG8gbyByZXN1bW8pIHBvciB0b2RvIG8gbXVuZG8gbm8gZm9ybWF0byBpbXByZXNzbyBlIGVsZXRyw7RuaWNvIGUgZW0gcXVhbHF1ZXIgbWVpbywgaW5jbHVpbmRvIG9zIGZvcm1hdG9zIMOhdWRpbyBvdSB2w61kZW8uCgpWb2PDqiBkZWNsYXJhIHF1ZSBjb25oZWNlIGEgcG9sw610aWNhIGRlIGNvcHlyaWdodCBkYSBlZGl0b3JhIGRvIHNldSBkb2N1bWVudG8gZSBxdWUgY29uaGVjZSBlIGFjZWl0YSBhcyBEaXJldHJpemVzIGRvIFJJLVVGTUcuCgpWb2PDqiBjb25jb3JkYSBxdWUgbyBSZXBvc2l0w7NyaW8gSW5zdGl0dWNpb25hbCBkYSBVRk1HIHBvZGUsIHNlbSBhbHRlcmFyIG8gY29udGXDumRvLCB0cmFuc3BvciBhIHN1YSBwdWJsaWNhw6fDo28gcGFyYSBxdWFscXVlciBtZWlvIG91IGZvcm1hdG8gcGFyYSBmaW5zIGRlIHByZXNlcnZhw6fDo28uCgpWb2PDqiB0YW1iw6ltIGNvbmNvcmRhIHF1ZSBvIFJlcG9zaXTDs3JpbyBJbnN0aXR1Y2lvbmFsIGRhIFVGTUcgcG9kZSBtYW50ZXIgbWFpcyBkZSB1bWEgY8OzcGlhIGRlIHN1YSBwdWJsaWNhw6fDo28gcGFyYSBmaW5zIGRlIHNlZ3VyYW7Dp2EsIGJhY2stdXAgZSBwcmVzZXJ2YcOnw6NvLgoKVm9jw6ogZGVjbGFyYSBxdWUgYSBzdWEgcHVibGljYcOnw6NvIMOpIG9yaWdpbmFsIGUgcXVlIHZvY8OqIHRlbSBvIHBvZGVyIGRlIGNvbmNlZGVyIG9zIGRpcmVpdG9zIGNvbnRpZG9zIG5lc3RhIGxpY2Vuw6dhLiBWb2PDqiB0YW1iw6ltIGRlY2xhcmEgcXVlIG8gZGVww7NzaXRvIGRlIHN1YSBwdWJsaWNhw6fDo28gbsOjbywgcXVlIHNlamEgZGUgc2V1IGNvbmhlY2ltZW50bywgaW5mcmluZ2UgZGlyZWl0b3MgYXV0b3JhaXMgZGUgbmluZ3XDqW0uCgpDYXNvIGEgc3VhIHB1YmxpY2HDp8OjbyBjb250ZW5oYSBtYXRlcmlhbCBxdWUgdm9jw6ogbsOjbyBwb3NzdWkgYSB0aXR1bGFyaWRhZGUgZG9zIGRpcmVpdG9zIGF1dG9yYWlzLCB2b2PDqiBkZWNsYXJhIHF1ZSBvYnRldmUgYSBwZXJtaXNzw6NvIGlycmVzdHJpdGEgZG8gZGV0ZW50b3IgZG9zIGRpcmVpdG9zIGF1dG9yYWlzIHBhcmEgY29uY2VkZXIgYW8gUmVwb3NpdMOzcmlvIEluc3RpdHVjaW9uYWwgZGEgVUZNRyBvcyBkaXJlaXRvcyBhcHJlc2VudGFkb3MgbmVzdGEgbGljZW7Dp2EsIGUgcXVlIGVzc2UgbWF0ZXJpYWwgZGUgcHJvcHJpZWRhZGUgZGUgdGVyY2Vpcm9zIGVzdMOhIGNsYXJhbWVudGUgaWRlbnRpZmljYWRvIGUgcmVjb25oZWNpZG8gbm8gdGV4dG8gb3Ugbm8gY29udGXDumRvIGRhIHB1YmxpY2HDp8OjbyBvcmEgZGVwb3NpdGFkYS4KCkNBU08gQSBQVUJMSUNBw4fDg08gT1JBIERFUE9TSVRBREEgVEVOSEEgU0lETyBSRVNVTFRBRE8gREUgVU0gUEFUUk9Dw41OSU8gT1UgQVBPSU8gREUgVU1BIEFHw4pOQ0lBIERFIEZPTUVOVE8gT1UgT1VUUk8gT1JHQU5JU01PLCBWT0PDiiBERUNMQVJBIFFVRSBSRVNQRUlUT1UgVE9ET1MgRSBRVUFJU1FVRVIgRElSRUlUT1MgREUgUkVWSVPDg08gQ09NTyBUQU1Cw4lNIEFTIERFTUFJUyBPQlJJR0HDh8OVRVMgRVhJR0lEQVMgUE9SIENPTlRSQVRPIE9VIEFDT1JETy4KCk8gUmVwb3NpdMOzcmlvIEluc3RpdHVjaW9uYWwgZGEgVUZNRyBzZSBjb21wcm9tZXRlIGEgaWRlbnRpZmljYXIgY2xhcmFtZW50ZSBvIHNldSBub21lKHMpIG91IG8ocykgbm9tZXMocykgZG8ocykgZGV0ZW50b3IoZXMpIGRvcyBkaXJlaXRvcyBhdXRvcmFpcyBkYSBwdWJsaWNhw6fDo28sIGUgbsOjbyBmYXLDoSBxdWFscXVlciBhbHRlcmHDp8OjbywgYWzDqW0gZGFxdWVsYXMgY29uY2VkaWRhcyBwb3IgZXN0YSBsaWNlbsOnYS4KCg==Repositório de PublicaçõesPUBhttps://repositorio.ufmg.br/oaiopendoar:2020-01-21T06:24:03Repositório Institucional da UFMG - Universidade Federal de Minas Gerais (UFMG)false
dc.title.pt_BR.fl_str_mv Execução de funções parciais em linguagem de programação C
title Execução de funções parciais em linguagem de programação C
spellingShingle Execução de funções parciais em linguagem de programação C
Marcus Rodrigues de Araújo
Execução automática
Análise estática
Análise dinâmica
Linguagem C
Computação — Teses
Compiladores (Computadores) — Teses.
Linguagens de programação (Computadores) — Teses.
title_short Execução de funções parciais em linguagem de programação C
title_full Execução de funções parciais em linguagem de programação C
title_fullStr Execução de funções parciais em linguagem de programação C
title_full_unstemmed Execução de funções parciais em linguagem de programação C
title_sort Execução de funções parciais em linguagem de programação C
author Marcus Rodrigues de Araújo
author_facet Marcus Rodrigues de Araújo
author_role author
dc.contributor.advisor1.fl_str_mv Fernando Magno Quintão Pereira
dc.contributor.advisor1Lattes.fl_str_mv http://lattes.cnpq.br/4608001746330875
dc.contributor.referee1.fl_str_mv Edson Marchetti da Silva
dc.contributor.referee2.fl_str_mv Rodolfo Sérgio Ferreira de Resende
dc.contributor.authorLattes.fl_str_mv http://lattes.cnpq.br/8125776158198770
dc.contributor.author.fl_str_mv Marcus Rodrigues de Araújo
contributor_str_mv Fernando Magno Quintão Pereira
Edson Marchetti da Silva
Rodolfo Sérgio Ferreira de Resende
dc.subject.por.fl_str_mv Execução automática
Análise estática
Análise dinâmica
Linguagem C
topic Execução automática
Análise estática
Análise dinâmica
Linguagem C
Computação — Teses
Compiladores (Computadores) — Teses.
Linguagens de programação (Computadores) — Teses.
dc.subject.other.pt_BR.fl_str_mv Computação — Teses
Compiladores (Computadores) — Teses.
Linguagens de programação (Computadores) — Teses.
description Atualmente a comunidade conta com diversos programas poderosos para a realização de análises dinâmicas. Exemplos desses analisadores são: Valgrind, útil para realizar diversos tipos de verificação em relação à execução de programas; e aprof, usada para auxiliar na busca por ineficiências assintóticas. Entretanto, essas ferramentas esperam receber como entrada um programa executável. Isso pode dificultar a tarefa de desenvolvedores em analisar trechos de código específicos, como funções. Considerando essa dificuldade, nesta dissertação são apresentadas um conjunto de técnicas que, juntas, possibilitam a execução automática de uma função escrita na linguagem C de forma isolada. Em especial, focamos em métodos que lidam com acessos a arranjos e é tido como objetivo que, ao ser executada, a função alvo não deve gerar acessos de memória inválidos causados pelos dados fornecidos para executá-la. Com as ideias apresentadas aqui, foi construída uma ferramenta, amazonc, que possibilita a execução de funções em C de forma isolada. Experimentos realizados com as funções núcleos (kernels) do Polybench reforçam a eficácia do método apresentado. Juntamente com aprof, amazonc possibilitou a reconstrução das curvas de complexidade assintóticas de todos os kernels considerados. Além disso, as reconstruções das curvas foram feitas sem que Valgrind apontasse nenhum erro de acessos inválidos a memória.
publishDate 2017
dc.date.issued.fl_str_mv 2017-11-30
dc.date.accessioned.fl_str_mv 2020-01-20T19:16:22Z
dc.date.available.fl_str_mv 2020-01-20T19:16:22Z
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/masterThesis
format masterThesis
status_str publishedVersion
dc.identifier.uri.fl_str_mv http://hdl.handle.net/1843/32056
url http://hdl.handle.net/1843/32056
dc.language.iso.fl_str_mv por
language por
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.publisher.none.fl_str_mv Universidade Federal de Minas Gerais
dc.publisher.program.fl_str_mv Programa de Pós-Graduação em Ciência da Computação
dc.publisher.initials.fl_str_mv UFMG
dc.publisher.country.fl_str_mv Brasil
dc.publisher.department.fl_str_mv ICEX - INSTITUTO DE CIÊNCIAS EXATAS
publisher.none.fl_str_mv Universidade Federal de Minas Gerais
dc.source.none.fl_str_mv reponame:Repositório Institucional da UFMG
instname:Universidade Federal de Minas Gerais (UFMG)
instacron:UFMG
instname_str Universidade Federal de Minas Gerais (UFMG)
instacron_str UFMG
institution UFMG
reponame_str Repositório Institucional da UFMG
collection Repositório Institucional da UFMG
bitstream.url.fl_str_mv https://repositorio.ufmg.br/bitstream/1843/32056/2/license.txt
https://repositorio.ufmg.br/bitstream/1843/32056/1/dissertacao27112019.pdf
https://repositorio.ufmg.br/bitstream/1843/32056/3/dissertacao27112019.pdf.txt
bitstream.checksum.fl_str_mv 34badce4be7e31e3adb4575ae96af679
9473177a2f0031bbaac89e00aea860e7
7d69642c69acb22dd378407fc0e2422b
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
repository.name.fl_str_mv Repositório Institucional da UFMG - Universidade Federal de Minas Gerais (UFMG)
repository.mail.fl_str_mv
_version_ 1797971093472935936