-
Uso de C-Reduce
- C-Reduce es una herramienta desarrollada por Regehr y sus colegas, utilizada para minimizar reproductores de bugs de compiladores de C.
- Por ejemplo, es útil cuando se quiere reducir un archivo de C de 10,000 líneas que provoca un bug en Clang.
- C-Reduce no se limita solo al lenguaje C y puede aplicarse a varios lenguajes.
-
Requisitos de C-Reduce
- Se necesita una condición determinista.
- Tener un reproductor rápido ayuda a acelerar la reducción.
- Se necesita uno o más archivos fuente modificables que C-Reduce pueda reducir.
-
Caso de bug en RustPython
- Para reportar un bug ocurrido en RustPython, se escribió el script
interesting.sh.
- El script ejecuta RustPython y luego busca un mensaje de error específico con
grep.
-
Ejecución de C-Reduce
- Al ejecutar C-Reduce, se logró reducir el tamaño del archivo en más del 50%.
- Se usó la opción
--not-c para evitar pases específicos de C y optimizarlo para Python.
- Como resultado, fue posible reducir el archivo de forma rápida y sencilla.
-
Conclusión
- C-Reduce puede aplicarse a diversos lenguajes y es útil para reducir archivos de manera rápida y eficiente.
- Es un blog de código abierto, por lo que si hay errores se pueden proponer cambios.
1 comentarios
Comentarios en Hacker News
Un usuario compartió un método para reducir archivos y explicó cómo configurarlo usando RustPython y scrapscript
git cloney compiló concargo build --releaseinteresting.shy le dio permisos de ejecuciónnix run nixpkgs#creduceRecomiendan usar C-Reduce y también probar una herramienta llamada Shrinkray
Mencionan que el artículo sobre C-Reduce fue publicado en 2012
Alguien dijo que acababa de conocer C-Reduce y que le produjo la misma emoción que cuando descubrió
git bisectpor primera vezEncontraron un artículo que muestra ejemplos de C-Reduce, pero les cuesta entender cómo decide qué eliminar en cada iteración
Consideran que C-Reduce es muy útil
La depuración delta no es un concepto nuevo
También funciona bien con SQL y lo están usando en el trabajo
Sin una explicación de por qué funciona también con lenguajes distintos de C, les resulta difícil creerlo
Recomiendan cvise como un buen sucesor de C-Reduce