OutputDebugString () не работает в Windows 7x64 - PullRequest
7 голосов
/ 23 ноября 2011

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

F1! F1! F1!

Ответы [ 3 ]

12 голосов
/ 17 января 2013

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

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

4 голосов
/ 09 мая 2017

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

  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)

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

4 голосов
/ 23 ноября 2011

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

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