compiling

Como desactivar o g++mostrando notas para erros

Ao compilar,os erros são frequentemente acompanhados por uma longa série de notas (ciano).Existe uma bandeira de g++para desactivar isto,mostrando apenas o erro em si?


O compilador não fará isso por você, mas (até agora...) os desenvolvedores do compilador estão seguindo uma convenção de longa data (mais de 30 anos) adaptada de outros compiladores que fornece as informações essenciais na primeira linha, usando error: ou warning: para marcar o aviso. Se você grep stderr para eles, verá as informações mínimas de aviso/erro.

grep é um bom ponto de partida (e a saída "grep -n" é útil por si só). Essas mensagens seguem um padrão de nome de arquivo, número de linha, mensagem que é comum a várias ferramentas. Eu usei isso no vi-like-emacs aqui .

Recentemente (em 2014) o gcc/g++ começou a adicionar uma "calling-stack" às mensagens, o que fornece informações extras. Isso depende de uma alteração no pré-processador para rastrear os números de linha que podem ser desativados com uma opção -P (observada aqui ), mas parece estar incompletamente integrado em um formulário que suprimiria a pilha de chamadas.

Usar clang não ajudaria muito com isso; pode ser muito detalhado também. O desenvolvimento do gcc/g++ adicionou muitas mensagens, conforme observado aqui .




Ao compilar, os erros geralmente são acompanhados por um rastreamento longo (ciano). Existe um sinalizador g++ para desabilitar isso, mostrando apenas o erro em si?

  • Você pode usar uma ferramenta antiga e não mais suportada como STLFilt .

  • Você pode alternar para Clang ou usá-lo para relatar apenas erros e realizar sua compilação final em GNU g++ .

  • Pode tornar-se mais familiarizado com STL,o que facilitará a decifração.

    Uma boa compreensão do STL e como usá-lo o ajudará a evitar muitos erros em primeiro lugar. Em segundo lugar, muitas vezes as mensagens de erro se referem a funções na fonte STL - se você tiver uma idéia aproximada de como o STL é implementado, isso pode ser extremamente útil para decifrar o que a mensagem de erro está acontecendo. As versões mais recentes do compilador g++ às vezes melhoram a saída, tornando-a mais útil e menos detalhada.

Não é exactamente o que se pretende,mas pode encurtar a produção:

  • Use o sinalizador -fmax-errors ou a opção -Wfatal-errors :

    -fmax-errors=n

    Limita o número máximo de mensagens de erro a n, no ponto em que o GCC sai em vez de tentar continuar processando o código-fonte. Se n for 0 (o padrão), não há limite no número de mensagens de erro produzidas. Se -Wfatal-errors também for especificado, -Wfatal-errors terá precedência sobre esta opção.

    -Wfatal-errors

    Esta opção faz com que o compilador aborte a compilação no primeiro erro ocorrido em vez de tentar continuar e imprimir mais mensagens de erro.