【问题标题】:Win32 Application Console Output?Win32 应用程序控制台输出?
【发布时间】:2011-03-10 03:20:05
【问题描述】:

在 Visual Studio 2005 中开发 Win32 应用程序(非控制台应用程序)时,有没有办法获得与控制台相同的输出?

例如,假设我想查看日志语句(例如在控制台应用程序中使用 cout)来跟踪我的程序在代码中所采用的路径。

我的第一个想法是这可以通过“输出”选项卡来完成,在调试时从“显示输出:”下拉列表中选择一些内容,但我不知道我需要什么 API 来执行此操作...

例如,假设我的 windows 应用程序中有以下内容,并且想知道以下函数何时进入和退出,将结果写入上面的 Visual Studio 窗口。

void someFunction(void)
{
   Win32APIConsoleLog("BEGIN: someFunction()");
   // ...
   Win32APIConsoleLog("END: someFunction()");
}

这可能吗?如果是这样,我需要包含哪些库以及需要进行哪些函数调用才能写入控制台窗口?

【问题讨论】:

  • 澄清一下:您想在 Visual Studio 中写入控制台,而不是命令提示符(带有黑色背景的单独控制台窗口),对吗?

标签: debugging visual-studio-2005 winapi console trace


【解决方案1】:

OutputDebugString.

我假设您想写入调试控制台,因为这就是您的屏幕截图显示的内容。 OutputDebugString 在没有附加调试器时是一个 nop,但它允许您将任何您想要的内容记录到调试器的输出中。

OutputDebugStringW(L"This will go to the output.\n");

// or

OutputDebugString("This will go to the output.\n");

【讨论】:

  • OutputDebugString 是一个普通的 API,它不是没有调试器的 NOP,任何用户模式应用程序都可以看到输出(Sysinternals DebugView 等)
  • @Anders,是的,但你必须特别要求它。它与控制台输出相同,尽管阅读器实际上不必是调试器。
  • 如果没有调试器(或调试视图)在监听,则调用是 NOP
猜你喜欢
  • 1970-01-01
  • 2010-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-18
  • 2015-12-11
  • 1970-01-01
相关资源
最近更新 更多