【问题标题】:Show global win32 output in Visual Studio在 Visual Studio 中显示全局 win32 输出
【发布时间】:2015-07-29 11:46:52
【问题描述】:

我想在 Visual Studio 2012 中捕获全局 win32 输出。我可以使用 DebugView 执行此操作,但我希望在 Visual Studio 窗口中具有这种输出。我不能只使用默认的 Debug 输出,因为我正在开发 SharePoint 解决方案并且附加到其他进程不起作用。

有没有办法在 Visual Studio 2012 中捕获全局 win32 输出,或者是否有一个插件可以捕获这种输出?

编辑:

澄清一下:我使用 C#,我可以编写调试输出。我无法附加到进程并想要捕获全局 win32 调试输出。

【问题讨论】:

  • DebugView 不显示“全局 win32 输出”。它只显示传递给 OutputDebugString() winapi 函数的字符串。使文本出现在调试器日志记录窗口中的一般方法。只有调试器可以显示它,它的 WaitForDebugEvent() 函数调用在 DEBUG_EVENT.dwDebugEventCode 设置为 OUTPUT_DEBUG_STRING_EVENT 的情况下完成。我怀疑你会在 Trace 类或 NLog 之类的日志库方面遥遥领先。
  • @HansPassant 谢谢,但我无法更改为其他调试解决方案 atm。在其他解决方案中,我使用 SharePoint 实习生 ULS-Log,只使用普通的 Visual Studio-Debug 工具,但在此解决方案中,我无法使用它们,必须使用 DebugView。
  • 为什么不能附加到其他进程?
  • @ThomasWeller Idk。尝试时出现错误。
  • 什么样的错误?请详细一点,我们想帮助您并且需要了解问题。

标签: debugging visual-studio-2012


【解决方案1】:

您是否尝试过仅使用以下...

OutputDebugString(str);

你可以在调试宏上使用它,我会在开发时使用类似的东西。

#if DEBUG_TO_VS2012 == 1
   #define DPRINTF( x ) OutputDebugString( x )
#else
   #define DPRINTF( X ) printf( x )
#endif

希望这种简单的方法有所帮助。

【讨论】:

  • 我使用 C#。但我认为这类似于 Debug.WriteLine(string str);。问题是,我无法附加到输出字符串的进程。
  • 让我研究一下-...只是想简单的选项-您是否尝试将输出定向到文件-然后只是在您的c#应用程序中显示该文件(每秒更新一次读取或所以)..?
  • 试试看这里stackoverflow.com/questions/5005874/… - 它可能需要对 Alex 稍作改动。
  • 我可以使用 DebugView 捕获调试输出,正如我在问题中链接的那样。我只是希望在 Visual Studio 中有某种捕获,因为在没有代码的情况下读取堆栈跟踪很烦人。我不想重写嚎叫应用程序。
  • 试试这个 - stackoverflow.com/questions/6938734/alternatives-to-debugview - 它显示了 debugView 的替代方案 - 这至少可以引导您朝着正确的方向前进。
【解决方案2】:

简单的答案:目前没有在 Visual Studio 中显示此输出的选项。当我找到一个插件时,我会更新这个答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-19
    相关资源
    最近更新 更多