将某些内容发送到标准错误的可能形式

时间:2011-06-20 16:12:53

标签: c++ stderr

我正在使用我拥有C ++源代码的程序的输出。程序将输出发送到stderr,我需要知道源代码中输出的计算位置和方式。

我知道向stderr发送内容的一种形式是

std::cerr << "foo";

我使用grep来查看是否使用了这个表单,但我找不到它。

我知道这是写给stderr的,因为当我运行程序时,我得到了这种形式的输出:

./program 2> file-with-info.txt

是否还有其他方法可以将输出发送到stderr?任何人都可以建议我可以寻找的模式来找到这个输出的发送位置吗?

3 个答案:

答案 0 :(得分:3)

不是

cerr < "foo"

cerr << "foo"

您也可以尝试grep for clog(重定向到标准错误流):

clog <<

您还可以搜索stderr和perror,它们是输出标准错误的旧C方式

答案 1 :(得分:2)

std::cerrstd::clogstderr这三个都表示标准错误流。前两个是(无缓冲和缓冲)C ++接口,第三个是旧的C stdio接口。 perror也会写入标准错误。

根据平台的不同,可能有更多方法输出到标准错误,例如在Unix上写入文件描述符2。 (如果你很幸运,你可以grep寻找符号常量STDERR_FILENO。)

答案 2 :(得分:0)

最可靠的做法是挂钩写出的OS函数,如果它写入标准错误输出,则打破/打印callstack。如果您满足于其他任何目标,那么在没有找到确切字符串的情况下,可以输出十几种方法。