我的Visual C++程序可以监听自己的调试输出吗?

sha*_*oth 9 c++ debugging winapi visual-c++

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

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

arx*_*arx 6

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

有两种获取数据的方法:

OutputDebugString协议仅支持单个侦听器,因此第一种方法与应用程序的多个实例,执行相同操作的其他应用程序或调试器不兼容.它还可以捕获所有应用程序的输出.这不是一个好主意.我之所以提到它只是因为它是一个明显但错误的解决方案.

OutputDebugStringW是(异常)一个包装器,OutputDebugStringA所以后者是钩子的功能.有很多库使得挂钩变得容易,因此每次调用都OutputDebugString将成为对您定义的函数的调用,并且您可以使用数据执行任何您喜欢的操作.