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 réussi à trouver mon chemin sur Google.
Si vous êtes libre de changer de compilateur, essayez clang ++ . Les sorties d'erreur sont la plupart du temps très claires et parfois, elles vous indiqueront même quoi faire pour corriger votre erreur. Vous pouvez trouver une comparaison de la sortie d’erreur gcc vs clang ici: http://clang.llvm.org/diagnostics.html .
Sinon, comme l’a noté Matteo Italia, recherchez STLFilt .
Pour la couleur, la solution d'Edwin Buck ( colorgcc ) est très bonne. Vous pouvez créer des liens symboliques nommés gcc, g ++, etc. pour qu'il soit toujours utilisé chaque fois que vous exécutez une commande du compilateur (à condition que vous ayez correctement configuré les chemins d'accès dans le script colorgcc). Je trouve cela particulièrement pratique lors de la compilation d’un gros projet à partir d’un Makefile. Aide énormément à détecter exactement où quelque chose s'est mal passé (surtout lorsque vous effectuez des compilations parallèles avec make -j
).
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'
Il y a colorgcc , un script Perl qui enveloppe la sortie gcc (g ++) de 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 :)
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/"
Si vous utilisez la version 4.9 ou supérieure de gcc, il existe deux options intégrées:
Pour plus d'options et d'utilisation exacte, voici la documentation:
https://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Message-Formatting-Options.html
Quand on traite avec le TSL1, STLFilt vient à la rescousse.
Sur une note connexe, j'ai également entendu dire que le compilateur Clang produit en soi beaucoup de messages d'erreur bien meilleurs.
Je ne peux pas répondre directement à votre question, mais notez qu'en ce qui concerne les modèles, si vous regardez le message du haut (l'erreur provoquée par le modèle) et le message "instancié à partir d'ici", cela devient généralement beaucoup plus clair. Ignorez tous les messages du milieu car ils ne vont probablement pas aider.
Il y a colorgcc .
il y a ma fonction personnelle:
colorgcc()
{
Perl -wln -M'Term::ANSIColor' -e '
m/not found$/ and print "\e[1;30m$`\e[0m", "$&", "\e[0m"
or
m/found$/ and print "\e[1;30m$`\e[0;32m", "$&", "\e[0m"
or
m/yes$/ and print "\e[1;30m$`\e[0;32m", "$&", "\e[0m"
or
m/no$/ and print "\e[1;30m$`\e[0m", "$&", "\e[0m"
or
m/ Error |error:/i and print "\e[1;91m", "$_", "\e[0m"
or
m/ Warning |warning:/i and print "\e[0;33m", "$_", "\e[0m"
or
m/nsinstall / and print "\e[0;36m", "$_", "\e[0m"
or
m/Linking |link: |\.a\b/ and print "\e[1;36m", "$_", "\e[0m"
or
m/Building|gcc|g++|\bCC\b|\bcc\b/ and print "\e[1;30m", "$_", "\e[0m"
or
print; '
}
vous pouvez utiliser GilCC, un outil Ruby qui convertira la sortie GCC en couleur en temps réel. C'est gratuit et vous pouvez le personnaliser selon vos préférences. Ce n'est pas intrusif car cela ne change pas votre configuration gcc et vous n'avez pas à éditer de fichiers système tels que .bash. Vous devez installer Ruby et pouvoir appeler les programmes Ruby à partir de la ligne de commande. Pour le moment, vous avez le script Perl ou GilCC à votre disposition et si vous travaillez avec Ruby, vous aimerez GilCC.
Ensuite, chaque fois que vous appelez "GillCC", il appelle "make" dans les coulisses avec vos paramètres tels que "clean", "debug" ou "release". Par exemple, si vous appelez normalement "make debug", vous devez appeler "debug GilCC".
J'ai presque oublié de mentionner que GilCC contient des statistiques telles que le nombre d'avertissements et d'erreurs, ainsi que le temps de compilation. Ces choses sont utiles lorsque vous essayez d’améliorer votre construction.
Le lien vers la page de téléchargement est ici .