【发布时间】:2014-06-22 20:56:03
【问题描述】:
我的程序使用了大量第三方库,这些库有时会将有用的错误消息放入调试器输出中(使用 OutputDebugString())。
我的程序能否以某种方式以编程方式访问该输出,以便对其进行解析并以更方便的方式向我报告?
【问题讨论】:
标签: c++ debugging winapi visual-c++
我的程序使用了大量第三方库,这些库有时会将有用的错误消息放入调试器输出中(使用 OutputDebugString())。
我的程序能否以某种方式以编程方式访问该输出,以便对其进行解析并以更方便的方式向我报告?
【问题讨论】:
标签: c++ debugging winapi visual-c++
没有 API 可让您通过 OutputDebugString 访问字符串输出。
有两种获取数据的方式:
OutputDebugStringA 函数。OutputDebugString 协议仅支持单个侦听器,因此第一种方法与您的应用程序的多个实例、执行相同操作的其他应用程序或调试器不兼容。它还将捕获所有应用程序的输出。这不是一个好主意。我提到它只是因为它是一个明显但错误的解决方案。
OutputDebugStringW 是(不寻常的)OutputDebugStringA 的包装器,因此后者是挂钩的函数。有很多库可以让挂钩变得简单,所以每次对 OutputDebugString 的调用都将成为对您定义的函数的调用,您可以对数据做任何您喜欢的事情。
【讨论】: