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

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

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

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

我使用这个名为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/" 

然后我就这样称呼它(使用make或者任何构建系统):

 make |& colorize 

我的颜色输出类似于铿锵声。

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

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

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

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

检查diagcc ,你可以得到这样的东西:

彩色信息演示

如果你的-fdiagnostics-color=always ,你可以使用参数-fdiagnostics-color=always

4年后回答你的问题,这里应该提到铿锵声 。

如果使用GCC 4.9,则可以添加-fdiagnostics-color=auto作为附加编译标志。 在某些更高版本中,默认情况下已启用颜色。

这是我当前的hack,它主要在战略位置插入换行符和缩进以及一些额外的注释,但没有解决STL冗长问题。

请注意,正如当前实现的那样,如果编译器返回一个脚本,则此脚本不会返回错误,因此执行此类操作将无法正常工作: (make && ./runApplication) 。 这肯定可以通过有更好的bash-fu的人来解决。

 #!/bin/bash # SUBSTITUTION RULES: # Note: All substitution rules must end in a semi-colon, inside of the closing quote subColonSpace='s/: /:\n /g;' subSrc='s/^src/\nsrc/;' subError='s/error:/error:\n\n======================================\nERROR:/;' subWarning='s/ *error: *\n/ERROR: /;' subWarning='s/ *warning: *\n/WARNING: /;' subNote='s/note:/\n NOTE:/g;' subOpenTic='s/'/\n '/g;' subOpenParen='s/(/(\n /g; s/(\n *)/()/g;' subCommaSpace='s/, /,\n /g;' # Note: The order of these may matter sedExpr="$subColonSpace $subSrc $subError $subWarning $subNote $subOpenTic $subOpenParen $subCommaSpace" makelogFile=makelog.tmp make "$@" 2>&1 | sed "$sedExpr" | tee $makelogFile 

如果你喜欢Ruby,那就是GilCC ! GilCC非常容易安装(只需将其复制到bin文件夹)并且易于使用(只需键入GilCC而不是“gcc”或“make”),它可以与GCC版本一起使用。 与基于Perl的脚本不同, GilCC具有诸如警告#和错误以及编译时间等统计信息。 您不必乱用.bash文件,只要您可以在您的计算机上运行Ruby,它就是跨平台的。 因为它具有Ruby的强大function; 您可以使GilCC在成功构建后执行不同的操作,例如触发测试自动化,unit testing或程序外部硬件。

以下是下载页面的链接: http : //www.onlysolutionssoftware.com/gilcc/