-
Utilisations de C-Reduce
- C-Reduce est un outil développé par Regehr et ses collègues, utilisé pour minimiser les reproductions de bugs de compilateurs C.
- Par exemple, il est utile lorsqu’on veut réduire un fichier C de 1000 lignes qui déclenche un bug dans Clang.
- C-Reduce ne se limite pas au langage C et peut s’appliquer à divers langages.
-
Exigences de C-Reduce
- Une condition déterministe est nécessaire.
- Disposer d’un reproducer rapide aide à accélérer la réduction.
- Il faut un ou plusieurs fichiers source modifiables que C-Reduce peut réduire.
-
Cas d’un bug dans RustPython
- Rédaction du script
interesting.sh pour signaler un bug survenu dans RustPython.
- Le script exécute RustPython puis recherche un message d’erreur spécifique avec
grep.
-
Exécution de C-Reduce
- L’exécution de C-Reduce a permis de réduire la taille du fichier de plus de 50 %.
- L’option
--not-c a été utilisée pour éviter les passes spécifiques au C et optimiser le processus pour Python.
- Au final, il a été possible de réduire le fichier rapidement et facilement.
-
Conclusion
- C-Reduce peut s’appliquer à divers langages et s’avère utile pour réduire des fichiers rapidement et efficacement.
- Il s’agit d’un blog open source, avec possibilité de proposer des modifications en cas d’erreur.
1 commentaires
Commentaires sur Hacker News
Un utilisateur partage une méthode pour réduire des fichiers et explique comment la configurer avec RustPython et scrapscript
git clonepour cloner RustPython et scrapscript, puis les compile aveccargo build --releaseinteresting.shet lui donne les droits d’exécutionnix run nixpkgs#creduceRecommande d’utiliser C-Reduce et suggère aussi d’essayer un outil appelé Shrinkray
Mentionne qu’un article sur C-Reduce a été publié en 2012
Dit qu’il vient de découvrir C-Reduce et ressent le même enthousiasme que lorsqu’il a découvert git bisect pour la première fois
A trouvé un article montrant des exemples de C-Reduce, mais a du mal à comprendre comment il décide quoi retirer à chaque itération
Estime que C-Reduce est extrêmement utile
Le delta debugging n’est pas un concept nouveau
Indique que cela fonctionne aussi très bien avec SQL et qu’il l’utilise au travail
Trouve difficile d’y croire sans explication sur la raison pour laquelle cela fonctionne aussi avec des langages autres que le C
Recommande cvise comme bon successeur de C-Reduce