-
Uso do C-Reduce
- C-Reduce é uma ferramenta desenvolvida por Regehr e seus colegas, usada para minimizar reproduções de bugs de compiladores C.
- Por exemplo, é útil quando você quer reduzir um arquivo C de 10.000 linhas que causa um bug no Clang.
- O C-Reduce não se limita à linguagem C e pode ser aplicado a várias linguagens.
-
Requisitos do C-Reduce
- É necessária uma condição determinística.
- Ter um reprodutor rápido ajuda na velocidade da redução.
- É necessário um ou mais arquivos-fonte mutáveis que o C-Reduce possa reduzir.
-
Caso de bug no RustPython
- Para relatar um bug ocorrido no RustPython, foi escrito o script
interesting.sh.
- O script executa o RustPython e depois procura uma mensagem de erro específica com
grep.
-
Execução do C-Reduce
- Ao executar o C-Reduce, foi possível reduzir o tamanho do arquivo em mais de 50%.
- A opção
--not-c foi usada para evitar passes específicos de C e otimizar para Python.
- Como resultado, foi possível reduzir o arquivo de forma rápida e fácil.
-
Conclusão
- O C-Reduce pode ser aplicado a várias linguagens e é útil para reduzir arquivos de forma rápida e eficiente.
- É um blog de código aberto, então, se houver erros, é possível sugerir alterações.
1 comentários
Comentários do Hacker News
Um usuário compartilha uma forma de reduzir arquivos e explica como configurar isso usando RustPython e scrapscript
git clonepara clonar RustPython e scrapscript, e compila comcargo build --releaseinteresting.she concede permissão de execuçãonix run nixpkgs#creducepara reduzir o arquivoRecomenda o uso do C-Reduce e também sugere experimentar uma ferramenta chamada Shrinkray
Menciona que um artigo sobre o C-Reduce foi publicado em 2012
Diz que conheceu o C-Reduce pela primeira vez e sentiu a mesma empolgação de quando descobriu o git bisect pela primeira vez
Encontrou um artigo que mostra exemplos do C-Reduce, mas acha difícil entender como ele decide o que remover em cada iteração
Avalia o C-Reduce como muito útil
Delta debugging não é um conceito novo
Também funciona bem com SQL e está sendo usado no trabalho
Sem uma explicação de por que funciona também em linguagens além de C, é difícil acreditar
Recomenda o cvise como um bom sucessor do C-Reduce