8

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

F1! F1! F1!

4

3 回答 3

12

很抱歉重新提出一个老问题,但我们花了几天时间在互联网上搜索来回答这个问题,最终记录了一个连接呼叫。我在这里发帖是为了帮助遇到同样情况的其他人。我们的具体问题是在调试 x64 混合模式应用程序时,在调试输出窗口中从 OutputDebugString、MFC TRACE 等获取输出。

根据微软的说法,显然对于调试 x64 混合模式应用程序,“自动”的调试器类型(在“调试”->“调试器类型”属性页中设置)默认为托管而不是混合。这需要明确设置为“混合”,以便在调试 64 位构建时看到托管和本机调试输出。

于 2013-01-17T09:30:56.453 回答
9

这可能会或可能不会起作用的原因有很多。我不小心禁用了这个——这里是你需要检查的所有东西才能让它工作:

  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变为 要么Native要么Mixed
  5. 调试器是否在程序启动之前尝试连接?要Attach 关闭:

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

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

    • Debug
    • Start Debugging (F5)

我之前没有看过一个完整的列表,所以以上是我必须验证的所有内容是否正确设置。

于 2017-05-09T14:02:08.817 回答
4

3个小建议:

  1. 确保您实际上正在捕获事件(顶部菜单 -> 捕获 -> 捕获 win32 已标记)
  2. 如果您的程序以低完整性运行(运行时是否会发出安全警告),您也需要以低完整性运行调试视图。为此,您需要在运行之前更改 dbgview.exe 的完整性级别。
  3. 如果您使用的是 Visual Studio 并使用调试器运行(按 F5),那么调试输出实际上是由 Visual Studio 捕获的(在输出窗口中)。尝试使用 ctrl f5 运行您的程序。
于 2011-11-22T22:19:56.897 回答