OutputDebugString()在Windows 7x64上不起作用

时间:2011-11-22 22:10:31

标签: windows-7-x64 outputdebugstring

我的程序适用于windows xp。我正在尝试添加更多功能,并使用OutputDebugString()来显示一些调试信息。在XP上完美运行。现在我想在Windows 7x64上使用相同的程序。我在DebugView看不到任何输出。

F1! F1! F1!

3 个答案:

答案 0 :(得分:12)

很抱歉恢复了一个旧问题,但我们花了几天时间在互联网上搜索这个问题并最终结束了连接通话。我在这里发帖是为了帮助处于同样情况的其他人。我们的具体问题是在调试x64混合模式应用程序时,在调试输出窗口中获取OutputDebugString,MFC TRACE等的输出。

根据Microsoft的说法,显然对于调试x64混合模式应用程序,调试器类型“auto”(在Debugging-> Debugger Type属性页面中设置)默认为managed而不是mixed。在调试64位版本时,需要将托管和本机调试输出显式设置为“混合”。

答案 1 :(得分:4)

3个小建议:

  1. 确保您实际捕获事件(顶层菜单 - >捕获 - >捕获win32已标记)
  2. 如果您的程序运行的完整性较低(在运行时它会发出安全警告),您还需要以低完整性运行调试视图。为此,您需要在运行之前更改dbgview.exe的完整性级别。
  3. 如果您正在使用visual studio并使用调试器运行(按F5),则调试输出实际上由visual studio捕获(在输出窗口中)。尝试使用ctrl f5运行程序。

答案 2 :(得分:4)

为什么这可能会或可能不会有多种原因。我不小心禁用了这个 - 以下是您需要检查的所有内容:

  1. 调试输出文本是否已从Output窗格重定向到Immediate窗格,因此您没有看到它?要关闭此

    • Debug
    • Options and Settings
    • [ ] Redirect all Output Windows text to the Immediate Window
  2. Output窗格是否可见?

    • Debug
    • Windows
    • Output
  3. Output窗格中,您是否启用了Program Output

    • Debug
    • Windows
    • Output
    • 右键单击窗格内的任意位置
    • [x] Program Output
  4. 您是否选择了Debugging Type权利?

    • Solution Explorer(查看>解决方案资源管理器)窗格
    • 右键单击您的项目
    • Properties
    • Debugging
    • Debugging Type:从Auto更改为NativeMixed
  5. 在程序启动之前,调试器是否尝试连接?要关闭Attach

    • Solution Explorer(查看>解决方案资源管理器)窗格
    • 右键单击您的项目,
    • Properties
    • Debugging
    • Attach:更改为No
  6. 您使用的是OutputDebugStringW()吗?请尝试使用OutputDebugStringA()

  7. 最后,你是否在调试模式下启动程序? :-)嘿,你永远都不知道!

    • Debug
    • Start Debugging (F5)
  8. 之前我没有看过一份全面的清单,所以我必须验证的所有内容都已正确设置。