我正在使用 cppcheck 工具来分析源代码。
在 gcc 编译器的 shell 提示符下,我给出了如下命令
$ cppcheck abc.cpp
输出是
checking abc.cpp...
(error) Possible null pointer dereference: <var> - otherwise it is redundant to check if <var> is null at line 100
segmentation fault
我希望将此输出保存在文件中,因此我给出了如下命令
$ cppcheck abc.cpp 2> abc.txt
但abc.txt文件内容如下
checking abc.cpp...
它只保存第一行,abc.txt 文件中缺少主要错误部分。
我应该使用哪个命令来获取文件中的所有输出行? cppcheck工具的手册是这里。
答案1
2
从命令中删除并仅用>
作重定向运算符。
通过使用,2>
您可以将错误流(STDERR)重定向到文件;听起来您想要的是常规输出流(STDOUT)。
cppcheck abc.cpp > abc.txt
如果你想两个都要访问您的文件,您可以将 2(错误流)连接到 1(标准输出流),如下所示:
cppcheck abc.cpp > abc.txt 2>&1
或者使用建议的快捷语法抓住一切。
答案2
您可能需要将 stdout 和 stderr 重定向到您的文件
cppcheck abc.cpp &>abc.txt
答案3
迦勒是对的关于 > 的使用,但tee
如果您想在保存到文件的同时查看日志,也可以使用该命令。
cppcheck abc.cpp | tee my.file.txt
它也应该与 2>&1 一起使用。
cppcheck abc.cpp 2>&1 | tee my.file.txt