有没有办法在命令行中获取可读的gcc错误和警告输出?

23 c c++ gcc gcc-warning

对于一些长的错误,gcc输出是密集的并且有很多换行等.特别是当错误很微妙时,我可能需要10-30秒的眯眼用眼睛来解析它.

我已经在一个开放的代码编辑器窗口中粘贴它,以获得一些基本的语法突出显示并启用regex的重新格式化.

有没有人发明过更自动化的方法?

Pau*_* II 16

我用这个脚本,叫做colorize:

#!/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或者任何构建系统):

make |& colorize
Run Code Online (Sandbox Code Playgroud)

我得到的颜色输出类似于铿锵声.

  • 这很好 - 它确实使消息更容易理解.另外,感谢使用`| &`来管道stderr - 我之前从未见过. (3认同)

Mr *_*ooz 14

我发现colorgcc非常宝贵.通过引入着色,在精神上解析gcc错误消息的文本变得更加容易,尤其是涉及模板时.

  • GCC主干(将为4.9)现在支持颜色诊断 (2认同)

Mic*_*urr 9

如果您的错误与模板有关,请查看STLfilt:


小智 7

gccfilter对消息进行着色和简化.

http://www.mixtion.org/gccfilter/