Отладка VS2017 на удаленном Linux - просмотр строк - PullRequest
0 голосов
/ 12 июня 2018

Я использую Visual Studio 2017 для разработки приложения C ++ на удаленной машине с Linux.Сначала я запускаю свой код на удаленном компьютере, а затем присоединяюсь к удаленному процессу с использованием SSH.Я присоединяюсь к нативному (GDB) коду и бью свою точку останова.Проблема в том, что я не могу просмотреть содержимое строки, полученной в отладчике.

std::string msg_str(static_cast<char*>(incoming.data()), incoming.size());

Приведенная выше строка извлекается через сообщение ZeroMQ.Если я сделаю QuickWatch для msg_str, ни одно из значений не будет в удобочитаемой форме.enter image description here Что я ожидаю увидеть:

{"message":"mark","color":"#FFAABB","session_id":"XVg32B","x":34,"y":563}

Что мне нужно сделать, чтобы просмотреть это в отладчике VS2017?

edit

Нет, я не компилирую с VS.Я разрабатываю игру, используя движок Urho3D.В Linux я использую cmake, чтобы создать make-файл, а затем скомпилировать / связать, используя make из оболочки bash SSH.В VS я получаю всевозможные ошибки сборки.

Я искал все выше и ниже для получения дополнительной информации о том, как настроить этот проект, но безрезультатно.Моя самая большая проблема заключается в том, что я являюсь разработчиком C # и пытаюсь освоить C ++.Кривая обучения довольно крутая ...

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

Не идеальное решение, но я делаю msg_str.c_str () в ближайшем окне.Вероятно, не сработает ни для чего, кроме 7-битного подмножества ascii в utf.

0 голосов
/ 13 июня 2018

Я думаю, проблема в том, что вы подключились к удаленному процессу, а VS не знает, что он должен смотреть на std::string.Вы можете запустить свой тест, построив и выполнив его из VS?Знает ли VS , что источник, который он видит, - это то, что работает в отладчике?

Похоже, что по крайней мере часть строк видна в QuickWatch как _M_p.Результат, который вы ожидаете, не является простой строкой, может ли это иметь отношение?

Я только что попытался проверить std::string ss ("12345", 5) в QuickWatch в VS2017 (15.7.3), и строка отображается именно так, как выбудет ожидать.Но я скомпилировал и запустил (F5) из VS.

========= 18 июня

Вы можете очень легко создать проект makefile в VCLinux.Добавьте новый проект в ваше решение и выберите Visual C++ - Cross Platform - Linux - Makefile Project.Затем скопируйте ваши исходники и make-файл во вновь созданный каталог проекта и добавьте их в проект VS.В настройках проекта установите команды Remote Build, например, cd $(RemoteProjectDir);make debug и в Debugging установите удаленную команду, которую вы хотите выполнить.

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

...