OutputDebugString() не работает в Windows 7x64

Моя программа прекрасно работает с Windows XP. Я пытаюсь добавить больше функциональности и использую OutputDebugString() показать некоторую отладочную информацию. работает безупречно на XP. Теперь, когда я хочу использовать ту же программу на Windows 7x64. Я не вижу никакого выхода в DebugView,

F1!F1!F1!

3 ответа

Решение

Извините за возрождение старого вопроса, но мы потратили пару дней на поиски в интернете, чтобы ответить на этот вопрос, и в конечном итоге закончили регистрацию звонка. Я пишу здесь, чтобы помочь кому-либо еще в такой же ситуации. Наша конкретная проблема заключалась в получении выходных данных из OutputDebugString, MFC TRACE и т. Д. В окне вывода отладки при отладке приложения x64 в смешанном режиме.

Согласно Microsoft, по-видимому, для отладки приложений x64 в смешанном режиме тип отладчика 'auto' (установленный на странице свойств Debugging->Debugger Type) по умолчанию является управляемым, а не смешанным. Это должно быть явно установлено на "Смешанный" как для управляемой, так и для собственной отладочной информации, которая будет видна при отладке 64-битной сборки.

Есть ряд причин, почему это может или не может работать. Я случайно отключил это - вот все, что вам нужно проверить, чтобы это заработало:

  1. Перенаправляется ли текст отладочной информации с Output панель к Immediate панель, значит, ты ее не видишь? Чтобы отключить это :

    • Debug
    • Options and Settings
    • [ ] Redirect all Output Windows text to the Immediate Window
  2. Это Output панель видна?

    • Debug
    • Windows
    • Output
  3. в Output панель у вас есть Program Output включен?

    • Debug
    • Windows
    • Output
    • Щелкните правой кнопкой мыши в любом месте панели
    • [x] Program Output
  4. У вас есть право Debugging Type выбран?

    • в Solution Explorer (Вид> Обозреватель решений) панель
    • Щелкните правой кнопкой мыши по вашему проекту
    • Properties
    • Debugging
    • Debugging Type: меняться от Auto либо Native или же Mixed
  5. Пытается ли отладчик подключиться до запуска программы? Превратить Attach от:

    • в Solution Explorer (Вид> Обозреватель решений) панель
    • Щелкните правой кнопкой мыши по вашему проекту,
    • Properties
    • Debugging
    • Attach: изменить на No
  6. Ты используешь OutputDebugStringW()? Попробуйте использовать OutputDebugStringA() вместо.

  7. Наконец, вы запустили программу в режиме отладки?:-) Эй, ты никогда не знаешь!

    • Debug
    • Start Debugging (F5)

Я не видел полного списка ранее, так что выше все, что я должен был проверить, было установлено правильно.

3 небольших предложения:

  1. убедитесь, что вы действительно захватываете события (верхнее меню -> захват -> захват win32 отмечен)
  2. если ваша программа работает с низким уровнем целостности (выдает ли она предупреждение безопасности, когда вы ее запускаете), вам также нужно запустить режим отладки с низким уровнем целостности. Для этого вам нужно изменить уровень целостности dbgview.exe перед его запуском.
  3. Если вы используете Visual Studio и работаете с отладчиком (нажата клавиша F5), вывод отладки фактически захватывается Visual Studio (в окне вывода). попробуйте запустить вашу программу с помощью Ctrl F5.
Другие вопросы по тегам