Возможно ли иметь доступ к стандартным выводам удаленной сессии GDB в Visual Studio? Я использую Visual Studio Visual C++ для разработки Linux и хотел бы иметь доступ ко всем данным printf'd.Вывод удаленного отладчика GDB в Visual Studio
ответ
IMHO как stdout, так и stderr должны быть переданы в окно вывода или отладки с помощью ssh/gdb-канала MSVC, но они не являются, по крайней мере, в MSVC 2017, версия 15.3. Надеюсь, Microsoft это будет для нас позже.
В то же время обходной путь можно использовать в режиме gdbserver. Стенд Debuggee заканчивается где-то в виртуальном терминале ssh. Он может быть перенаправлен, например. до /tmp/stdout
, установив Debug/solution Properties/Debugging/Program Arguments на >/tmp/stdout
, который можно посмотреть в другом терминале на tail -f /tmp/stdout
.
Другой способ увидеть stdout - показать его в отдельном окне, когда начинается отладчик, подобно новой консоли в процессе консоли Win32. Это может быть достигнуто с помощью X-сервера, работающего на том же компьютере, что и MSVC. Например. Xming отлично работает в Windows 7 (обратите внимание, что удаленная Linux-машина должна быть разрешена в c:\Program Files (x86)\Xming\X0.hosts
). X DISPLAY
переменная среды на удаленном компьютере Linux должна быть настроена на отображение отладочной машины Windows, например. до 192.168.1.10:0
. Установите Debug/solution Properties/Debugging/Pre-Launch Command на export DISPLAY=192.168.1.10:0
(замените IP-адрес вашей машиной Windows) или дайте оболочке заполнить IP-адрес для вас export DISPLAY="`sed -e 's/ .*/:0/'<<<"$SSH_CLIENT"`"
. В этом случае вывести stdout в трубку, установив параметры Debug/solution/Debugging/Program Arguments на |xless -f
(xless должен быть установлен на удаленном компьютере Linux, например, apt-get install xless
).
Обратите внимание, что stdout не всегда продувается debuggee с новой строкой при перенаправлении, поэтому setvbuf(stdout, NULL, _IONBF, 0)
в качестве первого вызова в main()
поможет.
Похоже, что stderr съедается трубой отладки MSVC, поэтому ее нельзя перенаправить без отладки, но stderr=stdout
в main()
поможет.
- 1. Проблема отладчика Visual Studio
- 2. Вопросы отладчика Visual Studio
- 3. Функция удаленного отладчика Visual Studio «Недействительный доступ к памяти» Функция
- 4. опция отладчика в visual studio 2005
- 5. Отключение отладчика в Visual Studio 2008
- 6. Visual studio + удаленная отладка gdb
- 7. Печатать сообщения отладчика в Visual Studio без изменения кода
- 8. Вывод Builded.exe visual studio
- 9. x86 Служба удаленного отладчика на x64
- 10. WinDbg протокол удаленного отладчика
- 11. Oracle - вывод в Visual Studio
- 12. Возвращение char */Visual Studio отладчика weirdness
- 13. Просмотр вывода XSLT-отладчика Visual Studio
- 14. visual studio 2013 ошибка отладчика значение вектора
- 15. Visual Studio как сериализовать объект из отладчика
- 16. Ошибка отладчика Visual Studio от AND-assign
- 17. Получить переменные из отладчика Visual Studio
- 18. Как собрать исключение из отладчика visual studio?
- 19. Visual Studio 2015 сбой при запуске отладчика
- 20. Что означает значение отладчика Visual Studio "{}"?
- 21. Visual Studio - предотвратить запуск F11 отладчика?
- 22. «Скрытые секреты» отладчика Visual Studio .NET?
- 23. Visual Studio не загружает мой визуализатор отладчика
- 24. Обновление Visual Studio 2013 1 Сбой отладчика
- 25. Поддержка отладчика Eclipse Luna GDB
- 26. Запуск кода внутри отладчика gdb
- 27. Как установить соединение отладчика gdb?
- 28. Платформа отладчика GDB (cortex-m3)
- 29. Проблема удаленного отладчика PHP cli
- 30. Ошибка отладчика Codelite: Не удалось найти gdb! в 'gdb'?
Мне известно только об этом https://blogs.msdn.microsoft.com/vcblog/2015/11/18/announcing-the-vs-gdb-debugger-extension/ – control