我的程序使用了大量的第三方库,这些库有时会将有用的错误消息放入调试器输出中(使用OutputDebugString())。

我的程序可以以某种方式以编程方式访问该输出,以便它可以解析它并以更方便的方式将其报告给我吗?

最佳答案

没有API可以让您访问通过OutputDebugString输出的字符串。

有两种获取数据的方法:

  • 不好的主意:实现OutputDebugString protocol的客户端。
  • 更好的主意:钩住OutputDebugStringA函数。
  • OutputDebugString协议(protocol)仅支持一个监听器,因此第一种方法与您的应用程序的多个实例,执行相同任务的其他应用程序或调试器不兼容。它还将捕获所有应用程序的输出。这不是一个好主意。我之所以提到它,只是因为它是一个显而易见的但错误的解决方案。
    OutputDebugStringW(通常)是OutputDebugStringA的包装,因此后者是要 Hook 的函数。有很多库使挂接变得容易,因此,每次对OutputDebugString的调用都将成为对您定义的函数的调用,并且您可以对数据执行任何您喜欢的事情。

    关于c++ - 我的Visual C++程序可以监听其自己的调试输出吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23491403/

    10-13 03:54