2009-05-27 4 views
1

Я использую макрос ASSERTE для проверки предварительных условий. Согласно его определению, он использует ASSERT_BASE, который, в свою очередь, вызывает _CrtDbgReportW для распечатки сообщения. Где идет выход _CrtDbgReportW?Где находится _CrtDbgReportW выход в Windows Mobile?

Я бы предположил, что если приложение запущено из отладчика, оно перейдет в окно отладчика. Куда будут отправляться сообщения, если они не находятся под отладчиком?

ответ

1

Выход для _CrtDbgReportW зависит от того, как вы его настроили. По умолчанию он отправляет его в API OutputDebugString.

Отладчики ловут вывод OutputDebugString и обычно отображают их в окне отладчика, как вы предлагаете.

Есть также приложения, которые захватывают выход, например DebugView, который вы можете использовать для приложений для ПК.

Обновление: я пропустил бит Windows Mobile. Я все еще опасаюсь, что он выводится в OutputDebugString, но я не знаю о каком-либо стороннем приложении, которое работает. Единственный способ, которым я знаю, чтобы захватить вывод OutputDebugString под Windows Mobile, - использовать Debugging FunctionsDebugActiveProcess/WaitForDebugEvent, чтобы уловить события OUTPUT_DEBUG_STRING_EVENT и записать их где-нибудь.