43 votes

Amélioration de la sortie g ++

g ++ produit parfois des sorties plutôt compliquées. Particulièrement lorsqu'il s'agit de modèles. Existe-t-il un outil qui rende la sortie de g ++ plus lisible? ... au moins un peu de couleur?

Cela peut sembler idiot de poser cette question ici, mais je n’ai pas pu me débrouiller pour en sortir.

40voto

David C. Bishop Points 2107

GCC à partir de 4,9 a coloré la sortie

Ajoutez ce qui suit à votre bashrc / zshrc / what.

 export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
 

36voto

Darhuuk Points 4862

Si vous êtes libre de commutateur de compilateur, essayez de clang++. C'est les sorties d'erreur sont la plupart du temps très clair, et parfois il va même jusqu'à vous dire quoi faire pour corriger votre erreur. Vous pouvez trouver une comparaison de gcc vs clang sortie d'erreur ici: http://clang.llvm.org/diagnostics.html.

Sinon, comme l'a noté Matteo Italia, regarder STLFilt.

Pour la couleur aspect, Edwin Buck est solution de (colorgcc) est très bonne. Vous pouvez créer des liens symboliques à elle nommée gcc, g++, etc, afin qu'elle obtient toujours utilisée chaque fois que vous exécutez une commande du compilateur (fourni vous permet de configurer les chemins d'accès dans le colorgcc script correctement). Je trouve cela particulièrement pratique lors de la compilation de certains grand projet à partir d'un Makefile. Aide énormément pour détecter exactement où quelque chose s'est mal passé (surtout quand vous faites des compilations en parallèle avec make -j).

12voto

Edwin Buck Points 33097

Il existe colorgcc , un script Perl qui enveloppe la sortie de gcc (g ++) avec des couleurs pour une lisibilité améliorée.

En ce qui concerne la "sortie" de gcc (g ++), je suppose que vous ne vous plaignez pas des fichiers binaires compilés :)

10voto

Paul Points 4552

Je l’améliore en utilisant sed pour colorer la sortie avec ce script:

 #!/bin/bash
while read x ; do echo $x ; done \
| sed -e "s/.*error:.*/\x1b[1;36m&\x1b[0m/" \
-e "s/.*warning:.*/\x1b[1;36m&\x1b[0m/" \
-e "s/^\(.*\)\(required from\)/\x1b[1;36m\1\x1b[0mnote: \2/" \
-e "s/^\(.*\)\(In instantiation of\)/\x1b[1;36m\1\x1b[0mnote: \2/" \
-e "s/^\(.*\)\(In member\)/\x1b[1;36m\1\x1b[0mnote: \2/" \
| sed -e "s/error:/\x1b[1;31m&\x1b[1;36m/" \
-e "s/warning:/\x1b[1;35m&\x1b[1;36m/" \
-e "s/note:/\x1b[1;30m&\x1b[0m/"
 

3voto

Matteo Italia Points 53117

Avec le STL 1 , STLFilt vient à la rescousse.

Sur une note connexe, j'ai également entendu dire que le compilateur Clang produit en soi de bien meilleurs messages d'erreur en général.


Le coin des Nitpickers
  1. En réalité, pas le STL SGI, mais ses parties qui ont été adoptées dans la norme C ++ et font partie de la bibliothèque standard.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X