我有一个Windows(VS2013)c ++应用程序。在整个应用程序中,我调用printf来输出信息。为了更好地浏览一些信息,我想尝试使用findstr
。在调试时我无法分辨输出信息的位置。该应用程序有多个线程。
myApplication.exe > foo.txt 2>&1
# here is a bunch of stuff that is printed to the console when I don't think it should be.
将创建一个名为foo.txt的空文件,没有输出,之后会将消息写入控制台,这让我感到困惑,因为我认为上面的命令应该同时管道stderr
和stdout
文件foo.txt
。正在运行type foo.txt
会显示一个空文件。
类似地,我无法将输出传递给findstr
或类似的,甚至无法告诉它输出的位置(看起来像是正常的stdout
)
从cygwin shell运行命令(我试过,因为我认为stdout
或stderr
存在问题而文本正在通过管道传输到其他东西)没有显示任何输出,支持我的想法,可能存在问题。输出到的文本在哪里?
编辑:我使用chromium embedded framework似乎已经变得相关了,在搜索代码时似乎有一些类似的东西:
// Add console so that 'logging' (really printf) is captured
// TODO: drop this once we no longer need it?
if(AttachConsole(ATTACH_PARENT_PROCESS) || AllocConsole()){
freopen("CONOUT$", "w", stdout);
freopen("CONOUT$", "w", stderr);
}
这看起来很有罪,感谢@frymode指出我正确的方向,我会在找到一个解决方案时更新。