捕获控制台输出以在VS中进行调试?

BCS*_*BCS 11 c# debugging visual-studio

在VS的外部工具设置下,有一个"使用输出窗口"复选框,用于捕获工具命令行输出并将其转储到VS选项卡.

问题是:当我点击F5时,我可以为我的程序获得相同的处理吗?

编辑: FWIW我在C#但是如果这对你的答案有所影响那么你的答案就不太可能是我正在寻找的.

我想要的是获取程序的输出流并使用输出重定向('|'和'>')在cmd提示符中使用的相同设备将其传输到VS中的输出选项卡.

Mar*_*ark 1

我将在这里做出一些假设。首先,我假设您正在谈论应用程序的 printf 输出(无论是来自控制台应用程序还是来自 Windows GUI 应用程序)。我的第二个假设是C语言。

据我所知,您不能将 printf 输出直接定向到 dev studio 中的输出窗口,无论如何也不能直接定向。 [OP添加的强调]

可能有办法,但我不知道。您可以做的一件事是将 printf 函数调用定向到您自己的例程,这将

  1. 调用 printf 并打印字符串
  2. 调用 OputDebugString() 将字符串打印到输出窗口

您可以做几件事来实现这个目标。首先是编写自己的 printf 函数,然后调用 printf 和 OuputDebugString()

void my_printf(const char *format, ...)
{
    char buf[2048];

    // get the arg list and format it into a string
    va_start(arglist, format);
    vsprintf_s(buf, 2048, format, arglist);
    va_end(arglist); 

    vprintf_s(buf);            // prints to the standard output stream
    OutputDebugString(buf);    // prints to the output window
}
Run Code Online (Sandbox Code Playgroud)

上面的代码大部分未经测试,但它应该可以传达概念。

如果您不是在 C/C++ 中执行此操作,那么此方法将不适合您。:-)