改善g ++输出

sle*_*ica 43 c++ g++

g ++有时会产生相当复杂的输出.特别是在处理模板时.有没有什么工具可以让g ++输出更具可读性?......至少有些颜色?

在这里提出这个问题可能听起来很愚蠢,但我一直无法用谷歌来解决这个问题.

Dav*_*hop 40

截至4.9的海湾合作委员会对产出col进行了着色

将以下内容附加到bashrc/zshrc/whatever.

export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
Run Code Online (Sandbox Code Playgroud)

  • 如果您正在通过管道构建系统运行,请使用`-fdiagnostics-color`或`-fdiagnostics-color = ALWAYS`进行编译. (4认同)

Dar*_*uuk 36

如果您可以自由切换编译器,请尝试使用clang ++.它的错误输出大部分时间非常清晰,有时它甚至会告诉你如何解决你的错误.你可以在这里找到gcc vs clang错误输出的比较:http://clang.llvm.org/diagnostics.html.

否则,如Matteo Italia所述,请关注STLFilt.

对于色彩方面,Edwin Buck的解决方案(colorgcc)非常好.您可以为它创建名为gcc,g ++等的符号链接,以便在运行编译器命令时始终使用它(如果您正确设置了colorgcc脚本中的路径).从Makefile编译一些大型项目时,我发现这特别方便.有助于检测出现错误的地方(特别是在进行并行编译时make -j).

  • 自从我提出这个问题并接受你的回答以来已经有很长一段时间了.我在清理书签时偶然发现了它,并意识到我从来没有对这个问题发表评论.为了将来的参考,我确实尝试了clang ++并且对编译器输出更加清晰感到惊喜:)谢谢! (2认同)

Edw*_*uck 12

colorgcc,一个perl脚本,用彩色包装gcc(g ++)输出,以便于阅读.

至于gcc(g ++)的"输出",我猜你不是在抱怨已编译的二进制文件:)


Pau*_* II 10

我通过使用sed使用此脚本为输出着色来改进它:

#!/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/"
Run Code Online (Sandbox Code Playgroud)

  • 使用`make |&colorize` (2认同)
  • 哦,着色剧本,你在哪里(我的)(专业)生活? (2认同)

Ben*_*aub 6

如果您使用gcc 4.9或更高版本,则有几个内置选项:

  • -fmessage-length = n,用于优化n个字符长度的行的输出.
  • -fdiagnostics-color = always,它应用了一些漂亮的颜色.
    (在linux上运行正常,而不是在msys上运行)

有关更多选项和确切用法,请参阅以下文档:https:
//gcc.gnu.org/onlinedocs/gcc/Diagnostic-Message-Formatting-Options.html