我正在使用使用函数OutputDebugString()的第三方库,并且在阅读MSDN文档时,它似乎表明这是用于打印到调试器 .
但是在我的情况下这是不方便的,如果没有连接调试器,有没有办法读取此输出?
如果它是我的LIB,我希望每当用户传递 --debug
或类似时输出转到stdout / stderr,但是因为它不是我正在寻找其他方法将这些信息传递给控制台(或文件)而不连接调试器 .
我正在使用使用函数OutputDebugString()的第三方库,并且在阅读MSDN文档时,它似乎表明这是用于打印到调试器 .
但是在我的情况下这是不方便的,如果没有连接调试器,有没有办法读取此输出?
如果它是我的LIB,我希望每当用户传递 --debug
或类似时输出转到stdout / stderr,但是因为它不是我正在寻找其他方法将这些信息传递给控制台(或文件)而不连接调试器 .
1 回答
OutputDebugStringA
生成异常DBG_PRINTEXCEPTION_C
(win10中的W
版本 -DBG_PRINTEXCEPTION_WIDE_C
),带有2个参数 - (字符串长度为字符1,字符串指针) - 结果我们可以自己处理此异常(此异常的系统默认处理程序执行this) .重定向
OutputDebugString
到控制台的示例处理程序:并设置此处理程序需要调用:
OutputDebugString
的系统实现与here一样 - 它确实称为RaiseException,正是这个参数,仅在异常处理程序中而不是MessageBox
- 代码描述为here .