OVH Cloud OVH Cloud

Outil pour lire les messages erreur trop long ?

15 réponses
Avatar
Laurent Plagne
Bonjour,

Les messages erreurs g=E9n=E9r=E9s par la compilation de codes C++ (en
particulier avec les template) sont parfois tr=E8s long.
Avez-vous connaissance d'outils permettant d'en faciliter la lecture ?

Merci pour votre aide.

Laurent

5 réponses

1 2
Avatar
Mathias Gaunard
On 7 sep, 10:26, Laurent Plagne wrote:
Bonjour,

Les messages erreurs générés par la compilation de codes C++ (en
particulier avec les template) sont parfois très long.
Avez-vous connaissance d'outils permettant d'en faciliter la lecture ?

Merci pour votre aide.

Laurent



Perso, j'utilise ma_commande_de_build 2>&1 | less
Et je m'en sors relativement bien, même avec du Boost.Fusion.

Le plus gros problème en fait, c'est que les templates sont pas bien
indentés. Si quelqu'un a un outil qui indente ça, ce serait top.
Avatar
Laurent
On 7 sep, 23:24, Marc wrote:
Laurent wrote:
> J'utilise gcc le + souvent.
> J'applique aussi ta stratégie (corriger les pbs en début de message
> avant de recompiler) mais mon problème est que j'utilise des types
> paramétrés par des type paramétrés etc....
> Un simple type peut prendre beaucoup de place et j'imaginais un
> système où les paramètres puissent être réduits/développé s à la
> souris...

J'utilise souvent une technique simple : la couleur du texte est donnée
par la profondeur de template (la seule subtilité est si on veut évit er
un décallage avec les opérateurs contenant < ou >). En particulier, p our
une fonction dont le type de retour prend 3 pages, le nom de la fonction
saute aux yeux. Ça reste beaucoup moins bien qu'un système qui factor ise
les sous-types, mais ça s'écrit en quelques minutes.

J'entends souvent du bien de stlfilt, mais je n'ai jamais eu l'occasion
de l'essayer (il n'est pas packagé par debian et j'ai toujous eu la
flemme de passer 1min30 à l'installer).



J'a
Avatar
Laurent
On 7 sep, 23:24, Marc wrote:
Laurent wrote:
> J'utilise gcc le + souvent.
> J'applique aussi ta stratégie (corriger les pbs en début de message
> avant de recompiler) mais mon problème est que j'utilise des types
> paramétrés par des type paramétrés etc....
> Un simple type peut prendre beaucoup de place et j'imaginais un
> système où les paramètres puissent être réduits/développé s à la
> souris...

J'utilise souvent une technique simple : la couleur du texte est donnée
par la profondeur de template (la seule subtilité est si on veut évit er
un décallage avec les opérateurs contenant < ou >). En particulier, p our
une fonction dont le type de retour prend 3 pages, le nom de la fonction
saute aux yeux. Ça reste beaucoup moins bien qu'un système qui factor ise
les sous-types, mais ça s'écrit en quelques minutes.

J'entends souvent du bien de stlfilt, mais je n'ai jamais eu l'occasion
de l'essayer (il n'est pas packagé par debian et j'ai toujous eu la
flemme de passer 1min30 à l'installer).



J'ai installé et essayé stlfilt qui permet effectivement de mettre en
forme les messages erreurs (indentation (ok pour Mathias ?)). En
revanche,
cela ne permet pas de colorier en fonction de la profondeur ce qui me
parait plus adapté à mon problème particulier.
A propos de flemme, c'est possible de récupérer la technique de
coloriage de Marc ?

Laurent
Avatar
Marc
Laurent wrote:

A propos de flemme, c'est possible de récupérer la technique de
coloriage de Marc ?



Je ne trouve plus la version perl qui protège les opérateurs (je dois
l'avoir quelque part, mais où ?), juste un truc c++ qui doit être la
première version que j'avais écrite. C'est fait pour écrire g++ ... 2>&1
| colortemplate dans un terminal particulier (ou une invocation plus
subtile pour récupérer le code de retour de g++). J'ai honte de poster
ça, pas la peine de critiquer.

#include <iostream>
#include <vector>
#include <string>

using namespace std;
int main(void){
vector<string> coul;
coul.push_back("e[m");
coul.push_back("e[31m");
coul.push_back("e[32m");
coul.push_back("e[33m");
coul.push_back("e[34m");
coul.push_back("e[35m");
coul.push_back("e[36m");
#ifndef HUIT_COULEURS
coul.push_back("e[90m");
coul.push_back("e[91m");
coul.push_back("e[92m");
coul.push_back("e[93m");
coul.push_back("e[94m");
coul.push_back("e[95m");
coul.push_back("e[96m");
#endif
char c;
int d=0;
while((cin.get(c))){
if(c=='<') {
cout << c << coul[++d%coul.size()];
} else if(c=='>') {
cout << coul[--d%coul.size()] << c;
} else cout << c;
}
return 0;
}
Avatar
Laurent
Merci, je vais essayer les template coloriés !

On 8 sep, 23:59, Marc wrote:
Laurent  wrote:
> A propos de flemme, c'est possible de récupérer la technique de
> coloriage de Marc ?

Je ne trouve plus la version perl qui protège les opérateurs (je dois
l'avoir quelque part, mais où ?), juste un truc c++ qui doit être l a
première version que j'avais écrite. C'est fait pour écrire g++ ... 2>&1
| colortemplate dans un terminal particulier (ou une invocation plus
subtile pour récupérer le code de retour de g++). J'ai honte de poste r
ça, pas la peine de critiquer.

#include <iostream>
#include <vector>
#include <string>

using namespace std;
int main(void){
    vector<string> coul;
    coul.push_back("e[m");
    coul.push_back("e[31m");
    coul.push_back("e[32m");
    coul.push_back("e[33m");
    coul.push_back("e[34m");
    coul.push_back("e[35m");
    coul.push_back("e[36m");
#ifndef HUIT_COULEURS
    coul.push_back("e[90m");
    coul.push_back("e[91m");
    coul.push_back("e[92m");
    coul.push_back("e[93m");
    coul.push_back("e[94m");
    coul.push_back("e[95m");
    coul.push_back("e[96m");
#endif
    char c;
    int d=0;
    while((cin.get(c))){
        if(c=='<') {
            cout << c << coul[++d%coul.size()];
        } else if(c=='>') {
            cout << coul[--d%coul.size()] << c;
        } else cout << c;
    }
    return 0;

}


1 2