对于一些长的错误,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:
http://www.bdsoft.com/tools/stlfilt.html
gccfilter对消息进行着色和简化.
http://www.mixtion.org/gccfilter/