OutputDebugString 函数不在我的控制台应用程序中发送消息
Posted
技术标签:
【中文标题】OutputDebugString 函数不在我的控制台应用程序中发送消息【英文标题】:OutputDebugString function don't send the message in my console app 【发布时间】:2016-12-03 12:34:09 【问题描述】:我尝试使用 OutputDebugString 函数发送调试消息。我在我的 dll 项目中使用此函数,并在 DebugView 中收到此消息。我也在我的控制台应用程序项目(相同的解决方案)中使用此功能,但我无法收到消息。除控制台应用程序外,所有消息都出现在 DebugView 中。它甚至没有出现简单的OutputDebugStringA("debug");
或OutputDebugString(L"debug");
代码。会导致什么?
【问题讨论】:
听起来你很容易提供minimal reproducible example 我不确定你的意思。您希望调试输出出现在控制台窗口中吗?它不会。为此使用std::cout << "message";
。
@Burak Kocaman,有什么更新吗?您能否与我们分享有关此问题的最新信息?
【参考方案1】:
一个问题是,无论您是在 VS 输出窗口还是在此处的工具 DebugView 中访问它:https://technet.microsoft.com/en-us/sysinternals/bb896647?f=255&MSPPError=-2147217396。它们是不同的。
如果您使用“调试”视图,而不是调试您的应用程序,只需使用“开始而不调试(Ctrl+F5)”运行它。
如果你使用VS输出窗口和其他app正常输出,只是具体的console app有这个问题,我觉得和调试工具无关,我们会考虑项目本身或者VS设置。
(1)请在代码行“OutputDebugString(L"debug");”中设置断点,然后使用“F5”调试您的应用,断点命中后点击“Step Into (F11)”,然后访问您的调试输出窗口。可能你这边没有调用具体的行代码。
(2)由于同一个解决方案中有不同的项目,请将此控制台应用程序设置为启动项目。或者你可以为这个项目创建一个解决方案,再次调试它。至少,我们可以知道其他项目是否会影响这个特定的控制台应用程序。
(3) 在其他VS IDE中测试一下,确定不是VS IDE的问题。我只是在我这边使用默认的VS设置,效果很好。
参考:
https://blogs.msdn.microsoft.com/reiley/2011/07/29/a-debugging-approach-to-outputdebugstring/
【讨论】:
以上是关于OutputDebugString 函数不在我的控制台应用程序中发送消息的主要内容,如果未能解决你的问题,请参考以下文章
将 OutputDebugString 记录到文件中(没有 DebugView)
log4cxx OutputDebugString DebugView dbgview