对于一些长时间的错误,gcc输出是密集的并且有很多换行等。特别是当错误很微妙时,我可能需要10-30秒的眯眼才能用眼睛解析它。
我已经开始在一个开放的代码编辑器窗口中粘贴它,以获得一些基本的语法突出显示并启用regex的重新格式化。
有没有人发明过更自动化的方法?
答案 0 :(得分: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/"
然后我就这样称呼它(使用make或者任何构建系统):
make |& colorize
我的颜色输出与clang相似。
答案 1 :(得分:14)
我发现colorgcc非常宝贵。通过引入着色,在精神上解析gcc错误消息的文本变得更加容易,尤其是涉及模板时。
答案 2 :(得分:9)
如果您的错误与模板有关,请查看STLfilt:
答案 3 :(得分:7)
gccfilter做着色&简化消息。
答案 4 :(得分:3)
答案 5 :(得分:2)
要在4年后回答您的问题,请在此处提及clang。
答案 6 :(得分:2)
如果您使用GCC 4.9,则可以添加-fdiagnostics-color=auto
作为附加编译标记。在某些更高版本中,默认情况下已启用颜色。
答案 7 :(得分:0)
这是我当前的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
答案 8 :(得分:0)
如果您喜欢Ruby,则 GilCC ! GilCC非常容易安装(只需将其复制到bin文件夹)并且易于使用(只需键入GilCC而不是“gcc”或“make”),它可以与GCC版本一起使用。与基于Perl的脚本不同, GilCC 具有诸如警告#和错误以及编译时间之类的统计信息。你不必乱用.bash文件,只要你可以在你的机器上运行Ruby,它就是跨平台的。因为它具有Ruby的强大功能;您可以让GilCC在成功构建后执行不同的操作,例如触发测试自动化,单元测试或程序外部硬件。
以下是下载页面的链接:http://www.onlysolutionssoftware.com/gilcc/