我的程序使用了大量的第三方库,这些库有时会将有用的错误消息放入调试器输出中(使用OutputDebugString()
)。
我的程序可以以某种方式以编程方式访问该输出,以便它可以解析它并以更方便的方式将其报告给我吗?
最佳答案
没有API可以让您访问通过OutputDebugString
输出的字符串。
有两种获取数据的方法:
OutputDebugStringA
函数。 OutputDebugString
协议(protocol)仅支持一个监听器,因此第一种方法与您的应用程序的多个实例,执行相同任务的其他应用程序或调试器不兼容。它还将捕获所有应用程序的输出。这不是一个好主意。我之所以提到它,只是因为它是一个显而易见的但错误的解决方案。OutputDebugStringW
(通常)是OutputDebugStringA
的包装,因此后者是要 Hook 的函数。有很多库使挂接变得容易,因此,每次对OutputDebugString
的调用都将成为对您定义的函数的调用,并且您可以对数据执行任何您喜欢的事情。关于c++ - 我的Visual C++程序可以监听其自己的调试输出吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23491403/