Подтвердить что ты не робот

Моно удаленная отладка от Visual Studio

Я хотел бы удаленно отлаживать консольное приложение С#, запущенное в Linux из Visual Studio. Вот что я нашел до сих пор:

http://www.mono-project.com/Debugger

Mono runtime реализует интерфейс отладки, который позволяет отладчиков и IDE для отладки управляемого кода. Это называется Soft Отладчик и поддерживается как MonoDevelop, Xamarin Studio, так и Visual Studio (когда установлены соответствующие плагины), а также клиент командной строки SDB.

Mono предоставляет API для связи с отладчиком и создания вашего собственные пользовательские интерфейсы отладки через сборку Mono.Debugger.Soft.dll.

На следующей странице обсуждаются некоторые проблемы текущей реализации отладчика MonoVS, но с ними все в порядке.

http://mono-project.com/Visual_Studio_Integration

Страница также ссылается на Руководство по началу работы для MonoVS:

http://mono-project.com/GettingStartedWithMonoVS

Что содержит ссылку для загрузки для MonoTools:

http://mono-tools.com/download/

Однако ссылка на скачивание теперь перенаправляется на:

http://xamarin.com/download/

Где мне предлагается скачать Xamarin Studio Starter Edition. Нажимая на ссылку "Цены", я вижу, что мне требуется хотя бы бизнес-версия для поддержки Visual Studio по цене 999 долларов США в год. Ну, нет, спасибо.

Вот где я застрял. Некоторые особенности моей среды:

Среда разработки:

  • 64-разрядная версия Windows 7
  • Visual Studio Pro 2013 (может использовать 2010, если это работает лучше)

Целевая среда:

  • Малина Пи
  • Raspbian Wheezy
  • Моно 3.2.8
  • Запуск консольного приложения через SSH
4b9b3361

Ответ 1

Я знаю, что это старый поток, но на всякий случай никто (например, я) еще не нашел решение для этого, но при поиске сегодня я нашел это расширение Visual Studio 2015, которое работает как шарм: MonoRemoteDebugger для Visual Studio 2015

См. MonoRemoteDebugger v1.0.4, чтобы исправить конфликт с расширением Xamarin VS на VS2015 update2.

Надеюсь, это поможет.

У вас есть счастливая отладка и благодарность разработчику!:)

Ответ 2

Я нашел это руководство, объясняющее, как выполнять удаленное отладку в Linux, из Windows, используя Xamarin Studio, которая теперь бесплатна, за исключением iOS и Разработка Android. Я расширил его с исправлениями для проблем, с которыми я столкнулся, тестируя его на малине Pi Zero W под управлением Raspbian Jessie Lite (2017-04-10).

  • Загрузите и установите Xamarin Studio, GTK # для .NET и .NET Framework 4.6.2. Xamarin Studio требует .NET 4.5, но для GTK # требуется .NET 4.6. Я использовал Xamarin Studio версии 6.1.2 (сборка 44) и GTK # версии 2.12.44.
  • Я установил Xamarin Studio на виртуальную машину, отличную от моей машины VS2015, поэтому мне нужно было скачать и установить MSBuild Tools 2013 и MSBuild Tools 2015.
  • Создать переменную окружения MONODEVELOP_SDB_TEST = 1 (Мой компьютер → Свойства → Дополнительные параметры системы → Переменные среды).
  • Запустите Xamarin Studio. Если окно не отображается, проверьте файлы журнала в папке %localappdata%\XamarinStudio-6.0\Logs, чтобы узнать, что не удалось.
  • Я создал консольное приложение .NET 4.6 в Visual Studio 2015 и добавил пакет NuGet Mono.Unofficial.pdb2mdb, я использовал версию 4.2.3.4. Пакет Mono.pdb2mdb версии 0.1.0.20130128, похоже, не работает с сборками, построенными VS2015 (PdbDebugException: Unknown custom metadata item kind: 6).
  • Загрузите файл .sln или .csproj из Visual Studio в Xamarin Studio. Создайте решение и используйте инструмент pdb2mdb из папки пакетов NuGet для создания файла .mdb: pdb2mdb MyProgram.exe
  • Я использовал WinSCP, чтобы скопировать MyProgram.exe и MyProgram.exe.mdb в мою малиновую Pi.
  • Я вошел в систему с Putty с помощью SSH и установил версию Mono 3.2.8 на Pi: sudo apt-get install mono-complete.
  • Запустите среду выполнения Mono с флагами отладчика: mono --debug --debugger-agent=transport=dt_socket,address=0.0.0.0:12345,server=y /path/to/MyProgram.exe. Это запустит программу, но прекратит выполнение до тех пор, пока не будет отладчик Xamarin Studio.
  • Установите точку останова в Xamarin Studio и выберите пункт меню Run -> Run with -> Custom Configuration... и выберите Run Action = Debug - Custom Command Mono Soft Debugger. Нажмите Debug.
  • Заполните поля IP и Port IP-адресом вашей Linux-системы и портом 12345, как указано в командной строке Mono. Нажмите Connect, и выполнение начнется, остановившись при задании точки останова.

Снимок экрана Xamarin Studio Debugging

Можно установить условные точки останова, вставить в/из/над кодом, посмотреть примитивы и объекты и т.д., и это довольно быстро. Я предпочел бы отлаживать непосредственно из Visual Studio, но это похоже на полностью работоспособное решение.

Ответ 3

Решение, которое вам нужно, приходит в этом году с MonoDebugger.NET. Разработчик (и) "promises", который мы можем развернуть на любое Mono-устройство, и отладить его в Visual Studio (2010-2015).

Ответ 4

Основываясь на Ответ Gutemberg Ribeiro, мне удалось получить MonoRemoteDebugger работая с VS2015 на малине Pi Zero W под управлением Raspbian Jessie Lite (2017-04-10). Хитрость заключалась в том, чтобы установить версию Mono позже 3.2.8:

  • Установите MonoRemoteDebugger расширение Visual Studio, я использовал версию 1.2.0.
  • Создайте консольное приложение .NET 4.6 в Visual Studio.
  • Если на Raspberry Pi установлена ​​более старая версия Mono, удалите ее с помощью команд:

    sudo apt-get purge mono-complete

    sudo apt-get autoremove

  • Установка Mono версии 4.0.2:

    sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com: 80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF

    echo "deb http://plugwash.raspbian.org/mono4 jessie-mono4 main "| sudo tee -a/etc/apt/sources.list

    Обновление sudo apt-get

    sudo apt-get install mono-complete

  • Установить сервер MonoRemoteDebugger:

    wget https://github.com/techl/MonoRemoteDebugger/releases/download/v1.2.0/MonoRemoteDebugger.Server.zip

    unzip -d MonoRemoteDebugger.Server MonoRemoteDebugger.Server.zip

  • Запустите сервер MonoRemoteDebugger:

    mono MonoRemoteDebugger.Server/MonoRemoteDebugger.Server.exe

  • Установите точку останова в Visual Studio и выберите пункт меню MonoRemoteDebugger -> Debug with Mono (remote) в Visual Studio.
  • Установите Remote-IP на IP-адрес малины Pi и нажмите Connect. MonoRemoteDebugger будет компилировать и передавать программу на малиновый пи. Не нужно вручную запускать pdb2mdb, файл .mdb будет создан сервером MonoRemoreDebugger.

Снимок экрана

Честно говоря, возможности отладки довольно ограничены. Простые точки останова и шаг в/из/над кодом, кажется, работают в порядке. Установка точки останова в функции и последующее переключение вызова этой функции не останавливаются в точке останова.

Примитивные типы можно наблюдать, но объекты, которые я пытался просмотреть, не могут отображаться. Представление "Столкновения вызовов" довольно ограничено, а вид "Нитки" пуст. Исключения не попадают, но вызывает сообщение "[ОШИБКА] FATAL UNHANDLED EXCEPTION" от MonoRemoteDebuggerServer. Но если вы можете жить с этими ограничениями, настройка проще, чем маршрут Xamarin Studio.