我正在使用 ASSERTE 宏来检查前置条件。根据它的定义,它使用 ASSERT_BASE,然后调用 _CrtDbgReportW 来打印消息。_CrtDbgReportW 输出到哪里?
我假设如果应用程序是从调试器启动的,它将进入调试器窗口。如果不在调试器下,消息会去哪里?
我正在使用 ASSERTE 宏来检查前置条件。根据它的定义,它使用 ASSERT_BASE,然后调用 _CrtDbgReportW 来打印消息。_CrtDbgReportW 输出到哪里?
我假设如果应用程序是从调试器启动的,它将进入调试器窗口。如果不在调试器下,消息会去哪里?
_CrtDbgReportW的输出取决于您的设置方式。默认情况下,它会将其发送到OutputDebugString API。
调试器捕获 OutputDebugString 输出,并通常按照您的建议将它们显示在调试器窗口中。
还有一些应用程序可以捕获输出,例如可用于 PC 应用程序的DebugView 。
更新:我错过了 Windows Mobile 位。我仍然相信它是输出到 OutputDebugString 但我不知道有任何第三方应用程序可以工作。我知道在 Windows Mobile 下捕获 OutputDebugString 输出的唯一方法是使用调试函数 DebugActiveProcess / WaitForDebugEvent捕获 OUTPUT_DEBUG_STRING_EVENT 事件并将它们写出某处。