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-битной сборки.
Есть ряд причин, почему это может или не может работать. Я случайно отключил это - вот все, что вам нужно проверить, чтобы это заработало:
Перенаправляется ли текст отладочной информации с
Output
панель кImmediate
панель, значит, ты ее не видишь? Чтобы отключить это :Debug
Options and Settings
[ ] Redirect all Output Windows text to the Immediate Window
Это
Output
панель видна?Debug
Windows
Output
в
Output
панель у вас естьProgram Output
включен?Debug
Windows
Output
- Щелкните правой кнопкой мыши в любом месте панели
[x] Program Output
У вас есть право
Debugging Type
выбран?- в
Solution Explorer
(Вид> Обозреватель решений) панель - Щелкните правой кнопкой мыши по вашему проекту
Properties
Debugging
Debugging Type
: меняться отAuto
либоNative
или жеMixed
- в
Пытается ли отладчик подключиться до запуска программы? Превратить
Attach
от:- в
Solution Explorer
(Вид> Обозреватель решений) панель - Щелкните правой кнопкой мыши по вашему проекту,
Properties
Debugging
Attach
: изменить наNo
- в
Ты используешь
OutputDebugStringW()
? Попробуйте использоватьOutputDebugStringA()
вместо.Наконец, вы запустили программу в режиме отладки?:-) Эй, ты никогда не знаешь!
Debug
Start Debugging (F5)
Я не видел полного списка ранее, так что выше все, что я должен был проверить, было установлено правильно.
3 небольших предложения:
- убедитесь, что вы действительно захватываете события (верхнее меню -> захват -> захват win32 отмечен)
- если ваша программа работает с низким уровнем целостности (выдает ли она предупреждение безопасности, когда вы ее запускаете), вам также нужно запустить режим отладки с низким уровнем целостности. Для этого вам нужно изменить уровень целостности dbgview.exe перед его запуском.
- Если вы используете Visual Studio и работаете с отладчиком (нажата клавиша F5), вывод отладки фактически захватывается Visual Studio (в окне вывода). попробуйте запустить вашу программу с помощью Ctrl F5.