Visual studio удаленная отладка linux

Обновлено: 04.07.2024

Присоединение к выполняемым процессам с использованием отладчика Visual Studio

Отладчик Visual Studio можно подключить к запущенному процессу на локальном или удаленном компьютере. После выполнения процесса выберите Отладка > Подключить к процессу или нажмите клавиши CTRL+ALT+P в Visual Studio и используйте диалоговое окно Подключение к процессу, чтобы подключить отладчик к процессу.

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

[!TIP] Не уверены, следует ли использовать параметр Подключить к процессу для сценария отладки? См. раздел Общие сценарии отладки.

Присоединение к выполняющемуся процессу на локальном компьютере

Сведения о том, как быстро присоединиться к процессу, подключенному ранее, см. в разделе Повторное подключение к процессу.

Порядок присоединения к процессу на локальном компьютере

В Visual Studio выберите Отладка > Подключить к процессу (или нажмите клавиши CTRL+ALT+P), чтобы открыть диалоговое окно Подключение к процессу.

Проверьте значение параметра Тип подключения.

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

В поле Цель подключения укажите имя локального компьютера.

Снимок экрана: диалоговое окно "Присоединение к процессу", в котором в качестве целевого объекта подключения задано имя локального компьютера.

В списке Доступные процессы найдите и выберите процессы, к которым нужно присоединиться.

Чтобы быстро выбрать процесс, введите его имя или первую букву в поле Фильтр процессов.

Если вы не знаете имя процесса, просмотрите список или обратитесь к разделу Общие сценарии отладки, чтобы ознакомиться с некоторыми распространенными именами процессов.

[!TIP] Процессы могут запускаться и останавливаться в фоновом режиме, пока диалоговое окно Подключение к процессу открыто, поэтому список запущенных процессов может не всегда быть актуальным. Чтобы просмотреть актуальный список, можно в любое время нажать кнопку Обновить.

Убедитесь, что в окне Присоединиться к указан тип кода, который планируется отладить. Для большинства типов приложений можно выбрать значение по умолчанию Автоматически.

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

Выбор кода вручную

Выберите Подключить.

. moniker range=">= vs-2022"

[!TIP] В сценарии с несколькими идентичными процессами вы можете указать процесс с использованием столбца командной строки или сведений о процессе w3wp из столбца заголовка. . moniker-end

[!NOTE] Во время отладки можно подключиться к нескольким приложениям, но в любой момент времени только один из них активен в отладчике. Можно выбрать текущую программу в панели инструментов Место отладки или окне Процессы в Visual Studio.

Присоединение к процессу на удаленном компьютере

В диалоговом окне Подключение к процессу также можно выбрать удаленный компьютер, просмотреть список доступных процессов, запущенных на этом компьютере, и подключиться к одному или нескольким процессам для отладки. На удаленном компьютере должен выполняться удаленный отладчик (msvsmon.exe). Дополнительные сведения см. в статье Удаленная отладка.

Присоединение к выполняющемуся процессу на удаленном компьютере

В Visual Studio выберите Отладка > Подключить к процессу (или нажмите клавиши CTRL+ALT+P), чтобы открыть диалоговое окно Подключение к процессу.

Проверьте значение параметра Тип подключения.

В большинстве случаев можно использовать значение По умолчанию. В некоторых сценариях, таких как отладка Linux или контейнерного приложения, требуется другой тип подключения. Дополнительные сведения см. в других разделах этой статьи, а также в разделе Общие сценарии отладки.

В поле Целевой объект подключения выберите удаленный компьютер одним из следующих способов.

Щелкните стрелку раскрывающегося списка Целевой объект подключения и выберите из раскрывающегося списка имя компьютера.

Введите имя компьютера в поле Целевой объект подключения и нажмите клавишу ВВОД.

Убедитесь, что Visual Studio добавляет требуемый порт в имя компьютера, которое отображается в формате <remote computer name>:порт.

. moniker range=">= vs-2022"

[!NOTE] Если вы не можете подключиться с помощью имени удаленного компьютера, попробуйте использовать IP-адрес и порт (например, 123.45.678.9:4022 ). 4026 — это порт по умолчанию для удаленного отладчика Visual Studio 2022. Сведения о других назначениях портов удаленного отладчика см. в разделе Назначение портов удаленного отладчика.

. moniker-end . moniker range="vs-2019"

[!NOTE] Если вы не можете подключиться с помощью имени удаленного компьютера, попробуйте использовать IP-адрес и порт (например, 123.45.678.9:4022 ). 4024 — это порт по умолчанию для удаленного отладчика Visual Studio 2019. Сведения о других назначениях портов удаленного отладчика см. в разделе Назначение портов удаленного отладчика.

. moniker-end . moniker range="vs-2017"

[!NOTE] Если вы не можете подключиться с помощью имени удаленного компьютера, попробуйте использовать IP-адрес и порт (например, 123.45.678.9:4022 ). 4022 — это порт по умолчанию для удаленного отладчика Visual Studio 2017. Сведения о других назначениях портов удаленного отладчика см. в разделе Назначение портов удаленного отладчика.

[!NOTE] Значение параметра Тип подключения сохраняется между сеансами отладки. Параметр Целевой объект подключения хранится между сеансами отладки только в случае успешного подключения отладки с этим целевым объектом.

[!TIP] Процессы могут запускаться и останавливаться в фоновом режиме, пока диалоговое окно Подключение к процессу открыто, поэтому список запущенных процессов может не всегда быть актуальным. Чтобы просмотреть актуальный список, можно в любое время нажать кнопку Обновить.

В списке Доступные процессы найдите и выберите процессы, к которым нужно присоединиться.

Чтобы быстро выбрать процесс, введите его имя или первую букву в поле Фильтр процессов.

Если вы не знаете имя процесса, просмотрите список или обратитесь к разделу Общие сценарии отладки, чтобы ознакомиться с некоторыми распространенными именами процессов.

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

Убедитесь, что в окне Присоединиться к указан тип кода, который планируется отладить. Для большинства типов приложений можно выбрать значение по умолчанию Автоматически.

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

Выбор кода вручную

Выберите Подключить.

[!NOTE] Во время отладки можно подключиться к нескольким приложениям, но в любой момент времени только один из них активен в отладчике. Можно выбрать текущую программу в панели инструментов Место отладки или окне Процессы в Visual Studio.

В некоторых случаях при отладке в сеансе удаленного рабочего стола (службы терминалов) в списке Доступные процессы не отображаются все доступные процессы. При работе с Visual Studio в качестве пользователя с ограниченным доступом в списке Доступные процессы не будут отображаться процессы, запущенные в сеансе 0, который используется для служб и других серверных процессов, включая w3wp.exe. Можно устранить эту проблему, запустив [!INCLUDEvsprvs] под учетной записью администратора или запустив [!INCLUDEvsprvs] с консоли сервера вместо сеанса служб терминалов.

Если ни один из этих обходных путей использовать невозможно, третий вариант — присоединение к процессу путем запуска vsjitdebugger.exe -p <ProcessId> из командной строки Windows. Можно определить идентификатор процесса с помощью tlist.exe. Чтобы получить файл tlist.exe, скачайте и установите средства отладки для Windows, которые доступны на странице скачиваемых файлов WDK и WinDbg.

Если вы выполняете публикацию в Службе приложений Azure (Windows), параметр Подключить отладчик можно найти в меню . в разделе Размещение. Visual Studio пытается подключить удаленный отладчик к экземпляру Службы приложений Azure (Windows), в котором публикуется профиль.

. image type="content" source="../debugger/media/attach-debugger-publish-profile.jpg" alt-text="Снимок экрана: параметр "Подключить отладчик" на странице сводки публикации".

. moniker range=">= vs-2019"

Присоединение к процессу, выполняющемуся в контейнере Docker

Повторное подключение к процессу

Чтобы быстро присоединиться к процессам, к которым вы ранее были присоединены, выберите Отладка > Повторно подключиться к процессу (SHIFT+ALT+P). При выборе этой команды отладчик сразу же попытается присоединиться к последним процессам, к которым вы подключались, сначала попытавшись выполнить сопоставление с ИД предыдущего процесса, а если это не удается, то путем сопоставления с именем предыдущего процесса. Если совпадений не найдено или несколько процессов имеют одно и то же имя, откроется диалоговое окно Подключение к процессу, в котором можно выбрать правильный процесс.

[!NOTE] Команда Повторно подключиться к процессу доступна начиная с Visual Studio 2017.

Общие сценарии отладки

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

Для некоторых типов приложений, например универсальных приложений для Windows (UWP), не следует напрямую подключаться к имени процесса. Вместо этого необходимо использовать команду Отладка установленного пакета приложения в Visual Studio (см. таблицу).

Чтобы отладчик мог присоединиться к коду на языке C++, код должен предоставлять DebuggableAttribute . Это можно добавить в код автоматически, путем связывания с параметром /ASSEMBLYDEBUG компоновщика.

Для отладки скриптов на стороне клиента в браузере должна быть включена отладка скриптов. Для отладки клиентского скрипта в Chrome выберите JavaScript (Chrome) или JavaScript (Microsoft Edge - Chromium) в качестве типа кода, и, в зависимости от типа приложения, может потребоваться закрыть все экземпляры Chrome и запустить браузер в режиме отладки (введите chrome.exe --remote-debugging-port=9222 в командной строке). В более ранних версиях Visual Studio в качестве отладчика скриптов для Chrome использовался Веб-пакет.

Чтобы быстро выбрать выполняющийся процесс для подключения, в Visual Studio нажмите клавиши CTRL+ALT+P, а затем введите первую букву имени процесса.

Использование функций отладчика

Чтобы использовать все функции отладчика Visual Studio (например, при обнаружении точек останова) при присоединении к процессу, приложение должно точно соответствовать локальным источнику и символам. То есть отладчик должен иметь возможность загрузки правильных файлов символов (PDB). По умолчанию для этого требуется отладочная сборка.

В сценариях удаленной отладки должен быть уже открыт исходный код (или копия исходного кода) в Visual Studio. Скомпилированные двоичные файлы приложения на удаленном компьютере должны поступать из той же сборки, что и на локальном компьютере.

В некоторых локальных сценариях отладки в Visual Studio можно выполнять отладку без доступа к источнику, если в приложении есть правильные файлы символов. По умолчанию для этого требуется отладочная сборка. Дополнительные сведения см. в разделе Указание файлов символов и исходных файлов.

Устранение ошибок присоединения

В некоторых сценариях отладчику может потребоваться помощь, чтобы правильно определить тип отлаживаемого кода. Если значения для подключения заданы правильно (проверить процесс можно в списке Доступные процессы), но отладчику не удается подключиться, попробуйте выбрать наиболее подходящий тип подключения в списке Тип подключения. Это может потребоваться, например, при отладке приложения Linux или Python. Если используется тип подключения "По умолчанию", можно также выбрать определенный тип кода для подключения, как описано далее в этом разделе.

При присоединении отладчика к выполняющемуся процессу этот процесс может содержать один или несколько типов кода. Типы кода, к которым может присоединиться отладчик, отображаются и выбираются в диалоговом окне Выбор типа кода .

Иногда отладчик может успешно присоединяться к одному типу кода, но не к другому. Это происходит в следующих случаях:

  • При попытке присоединения к процессу, выполняющемуся на удаленном компьютере. На удаленном компьютере для одних типов кода могут иметься компоненты удаленной отладки, а для других — нет.
  • При попытке присоединиться к двум или более процессам для прямой отладки базы данных. Отладка SQL поддерживает присоединение только к одному процессу.

Если отладчик успешно подключается хотя бы к одному типу кода, то можно приступать к отладке процесса. Но отлаживать можно будет только те типы кода, к которым удалось подсоединиться. Неподключенный код в этом процессе будет по-прежнему выполняться, но задавать в этом коде точки останова, просматривать данные и выполнять другие операции отладки не удастся.

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

Чтобы получить подробные сведения о том, почему не удалось присоединиться к типу кода:

Отключитесь от процесса. В меню Отладка выберите Отсоединить все.

Вновь подключитесь к процессу, выбрав только тип кода.

В диалоговом окне Присоединение к процессу выберите процесс в списке Доступные процессы.

Щелкните Выбрать.

В диалоговом окне Выбор типа кода выберите Выполнять отладку кода следующих типов и выберите тип кода, к которому не удалось присоединиться. Отмените выбор других типов кода.

В диалоговом окне Подключение к процессу нажмите Подключиться.

Поддержка Linux реализована в Visual Studio версии 2017 и выше. Чтобы увидеть документацию для этих версий, установите в расположенном над содержанием раскрывающемся списке Версия пункт Visual Studio 2017 или Visual Studio 2019.

После создания проекта Linux на основе MSBuild C++ в Visual Studio и подключения к проекту с помощью диспетчера подключений Linux можно запускать и отлаживать проект. Компиляция, выполнение и отладка кода осуществляются в удаленной системе.

Visual Studio 2019 версии 16.1 и более поздней. Вы можете использовать разные системы Linux для отладки и сборки. Например, при работе с Интернетом вещей можно выполнить компиляцию на платформе x64 и развернуть приложение на устройстве ARM. Дополнительные сведения см. в разделе Указание разных компьютеров для сборки и отладки далее в этой статье.

Существует несколько способов взаимодействия с проектом Linux и его отладки.

Использование традиционных средств Visual Studio, таких как точки останова, окна контрольных значений и наведение указателя мыши на переменную. С их помощью вы можете выполнять отладку так, как вы делаете это для других типов проектов.

Просмотрите выходные данные целевого компьютера в окне консоли Linux. Консоль можно также использовать для отправки входных данных на целевой компьютер.

Отладка проекта Linux

Выберите режим отладки на странице свойств Отладка.

GDB используется для отладки приложений на платформе Linux. При отладке в целевой системе (не WSL) GDB может работать в двух разных режимах, которые можно указать с помощью параметра Режим отладки на странице свойств Отладка проекта:

GDB используется для отладки приложений на платформе Linux. GDB может работать в двух разных режимах, которые выбираются в параметре Режим отладки на странице свойств Отладка проекта:

В режиме gdbserver GDB выполняется в локальной среде, подключенной к gdbserver в удаленной системе.

В режиме gdb в Visual Studio отладчик запускает GDB в удаленной системе. Это лучший вариант, если локальная версия GDB несовместима с версией, установленной на целевом компьютере. Это единственный режим, который поддерживает окно консоли Linux.

Если не удается попасть в точки останова в режиме отладки gdbserver, попробуйте gdb режим. gdb сначала следует установить в удаленной целевой системе.

Выберите удаленную целевую систему, используя стандартную панель инструментов Отладка в Visual Studio.

Если удаленная целевая система доступна, вы определите ее по имени или IP-адресу.

Снимок экрана: удаленный целевой объект.

Если вы еще не подключились к удаленной целевой системе, вы увидите инструкции по использованию диспетчера подключений Linux для выполнения подключения.

Снимок экрана: удаленная архитектура.

Задайте точку останова, щелкнув в левом поле код, который будет выполняться.

В строке кода, где вы задали точку останова, появится красная точка.

Нажмите клавишу F5 (или Отладка > Начать отладку), чтобы начать отладку.

При запуске отладки приложение компилируется на удаленном целевом компьютере и после этого запускается. Ошибки компиляции будут показаны в окне Список ошибок.

Если ошибок нет, приложение запустится, и по достижении точки останова отладчик остановится.

Снимок экрана: приложение, достигшее точки останова.

Теперь можно работать с приложением в его текущем состоянии, просматривать переменные и пошагово выполнять код, нажимая командные клавиши, такие как F10 или F11.

Если для взаимодействия с приложением вы хотите использовать консоль Linux, выберите Отладка > Консоль Linux.

Снимок экрана: пункт меню консоли Linux.

Эта консоль отображает выходные данные консоли с целевого компьютера, принимает входные данные и отправляет их на целевой компьютер.

Снимок экрана: окно консоли Linux.

Настройка других параметров отладки (проекты MSBuild)

Аргументы командной строки можно передать в исполняемый файл с помощью элемента Аргументы программы на странице свойств Отладка проекта.

Вы можете экспортировать переменную среды DISPLAY с помощью команды перед запуском на страницах свойств Отладка проекта. Пример: export DISPLAY=:0.0

Специальные параметры отладчика можно передать в GDB с помощью записи Дополнительные команды отладчика. Например, можно игнорировать сигналы SIGILL (недопустимая инструкция). Для этого вы можете применить команду handle, добавив следующий текст в поле Дополнительные команды отладчика, как показано выше:

handle SIGILL nostop noprint

Путь к файлу GDB, который используется Visual Studio, можно указать с помощью элемента GDB Path (Путь к GDB) на странице свойств Отладка проекта. Это свойство доступно в Visual Studio 2019 версии 16.9 и более поздних версий.

Отладка с использованием присоединения к процессу

AttachOptionsForConnection имеет значительную часть атрибутов, которые могут потребоваться. Приведенный выше пример показывает, как указать расположение для поиска дополнительных библиотек .so. Дочерний элемент ServerOptions позволяет вместо этого подключиться к удаленному процессу с использованием gdbserver. Для этого необходимо указать локальный клиент gdb (экземпляр, предоставляемый с Visual Studio 2017, показан выше) и локальную копию двоичного файла с символами. Элемент SetupCommands позволяет передавать команды непосредственно в gdb. Все эти параметры доступны в схеме LaunchOptions.xsd на сайте GitHub.

Указание разных компьютеров для сборки и отладки в проектах Linux на основе MSBuild

Вы можете отделить удаленный компьютер сборки от удаленного компьютера отладки для любых проектов MSBuild и CMake, которые будут использоваться с удаленным компьютером Linux. Например, при работе с Интернетом вещей теперь можно выполнить компиляцию на платформе x64 и развернуть приложение на устройстве ARM.

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

В раскрывающемся меню Удаленный компьютер отладки перечислены все созданные удаленные подключения. Чтобы добавить новое удаленное подключение, откройте раздел Средства > Параметры > Кроссплатформенные > Диспетчер подключений или выполните поиск по строке "диспетчер подключений" на панели быстрого запуска. Кроме того, новый удаленный каталог для развертывания можно указать на страницах свойств проекта (Свойства конфигурации > Общие > Каталог удаленного развертывания).

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

Снимок экрана: развертываемые файлы Linux, указанные в окне "Свойства".

В некоторых случаях может потребоваться более точный контроль над развертыванием проекта. Например, если некоторые файлы для развертывания расположены за пределами решения или вы хотите настроить несколько удаленных каталогов для разных исходных файлов или каталогов. Для таких случаев добавьте следующий блок кода один или несколько раз в файл с расширением .vcxproj, заменив в них строку example.cpp именами реальных файлов:

Проекты CMake

Для проектов CMake, которые будут использоваться с удаленным компьютером Linux, можно указать новый удаленный компьютер отладки в файле launch.vs.json. По умолчанию значение remoteMachineName синхронизируется со свойством remoteMachineName из файла CMakeSettings.json, который обозначает удаленный компьютер сборки. Теперь эти свойства могут не совпадать, а значение remoteMachineName в файле launch.vs.json обозначает удаленный компьютер, который используется для развертывания и отладки.

Компьютер удаленной отладки CMake, указанный в файле launch.vs.json.

IntelliSense предложит полный список всех установленных удаленных подключений. Чтобы добавить новое удаленное подключение, откройте раздел Средства > Параметры > Кроссплатформенные > Диспетчер подключений или выполните поиск по строке "диспетчер подключений" на панели быстрого запуска.

Итак, имеем на руках:

Компьютер разработчика

Также желательно иметь версию Windows 10 1803, так как в неё по умолчанию установлен OpenSSH. В более ранних версиях Windows 10 OpenSSH можно установить через "Управление дополнительными компонентами". Однако при этом ни что не запрещает пользоваться сторонними SSH клиентами.

Целевое устройство

Подготовка

В первую очередь необходимо настроить SSH доступ по ключу. В этом отлично помогает отличная инструкция от Digital Ocean.

Приватные ключи можно хранить отдельными файлами в папке .ssh, но я рекомендую использовать довольно удобную связку KeePass+KeeAgent. KeePass обеспечивает безопасное хранение ключа, а KeeAgent предоставляет ключи. Для того, чтобы он заработал с встроенным в Windows SSH клиентом необходимо активировать соответствующую экспериментальную настройку.*

В первую очередь неоходимо установим зависимости, перечисленные в документации.

Теперь можно установить SDK.

Прямую ссылку на архив c SDK можжно взять со страницы SDK на GitHub.

Установка удалённого отладчика

Скрипт установки удалённого отладчика использует unzip :

Для установки удалённого отладчика необходимо выполнить следующую команду:

1. Создаем проект

Тут всё очень просто:

2. Создаем файлы конфигурации

3. Правим файлы конфигурации

Основная идея запуска и отладки на удалённом устройстве состоит в том, чтобы создать задачи, собирающие проект и копирующие его на устройство и конфигурацию запуска, использующую удалённый отладчик.
Приведу описание готовых задач:

Задача publish вызывает команду dotnet publish , которая упаковывает приложение и его зависимости в папку для развертывания.

Команда copy-to-device использует scp для копирования опубликованного приложения на удалённое устройство. Обратите внимание на точку в конце пути из которого происходит копирование. Если её не указать, то при последующих копированиях папка publish будет помещена в DemoProject , а не перезапишет ёё. Параметр dependsOn указывает на то, что copy-to-device зависит от publish . Таким образом перед выполнением copy-to-device выполнится publish .

Далее необходимо настроить конфигурацию удалённого запуска и отладки:

Параметр "preLaunchTask": "copy-to-device" указывает на то, что перед началом сеанса отладки необходимо выполнить задачу copy-to-device . Таким образом каждый раз перед отладкой будет происходить публикация проекта и его копирование на целевое устройство.

Параметр pipeTransport позволяет настроить использование удалённого отладчика. В данном случае в качестве программы, обеспечивающей транспорт используется ssh , но ни что не мешает использовать и plink.exe из набора программ putty .

4. Отлаживаемся

После нажатия F5 происходит сборка, копирование проекта и запуск приложения на удалённом устройстве. Отладка происходит полностью идентично локальной.

Предварительные требования

На сервере Linux необходимо установить SSH-сервер (распакуйте и установите его с помощью curl или wget). Например, в Ubuntu это можно сделать, запустив:

Протокол SFTP должен быть включен так же, как и SSH. Большинство дистрибутивов SSH устанавливают и включают SFTP по умолчанию, но это не всегда так.

Подготовка приложения к отладке

Подготовка приложения для отладки

При сборке приложения рассмотрите возможность использования конфигурации "Отладка". Отладка кода, скомпилированного для розничного выпуска (конфигурация "Выпуск"), намного сложнее, чем отладка кода, скомпилированного для отладочного выпуска. Если необходимо использовать конфигурацию "Выпуск", сначала отключите режим "Только мой код". Чтобы отключить этот параметр, последовательно выберите Сервис > Параметры > Отладка, а затем снимите флажок Включить только мой код.

Убедитесь, что проект настроен на создание переносимых PDB-файлов (параметр по умолчанию) и что PDB-файлы находятся в том же расположении, что и библиотека DLL. Чтобы выполнить эту настройку в Visual Studio, щелкните проект правой кнопкой мыши, затем выберите Свойства > Сборка > Дополнительно > Отладочная информация.

Создание и развертывание приложения.

Для развертывания приложения перед отладкой можно использовать несколько методов. Например, с их помощью можно выполнять следующее.

Скопируйте источники на целевой компьютер и выполните сборку с помощью dotnet build на компьютере Linux.

Выполните сборку приложения в Windows, а затем перенесите артефакты сборки на компьютер Linux. (Артефакты сборки включают само приложение, переносимые PDB-файлы, любые библиотеки среды выполнения, от которых может зависеть приложение, и файл .deps.json.)

При развертывании приложения запустите приложение.

Подключение отладчика

После запуска приложения на компьютере с Linux можно подключить отладчик.

В Visual Studio последовательно выберите пункты Отладка > Присоединиться к процессу. .

В списке Тип подключения выберите SSH.

В поле Цель подключения укажите IP-адрес или имя узла целевого компьютера.

Если вы еще не указали учетные данные, вам будет предложено ввести пароль и (или) указать файл закрытого ключа.

Настраивать порты не требуется, за исключением порта, на котором выполняется сервер SSH.

Найдите процесс, который нужно отладить.

Код выполняется в процессе с уникальным именем или в процессе с именем dotnet. Чтобы найти требуемый процесс, просмотрите столбец Заголовок, в котором отображаются аргументы командной строки для процесса.

В следующем примере показан список процессов на удаленном компьютере Linux, подключенных по протоколу SSH, отображаемых в диалоговом окне Присоединение к процессу.

Присоединение к процессу Linux

Выберите Присоединиться.

Используйте функции отладки Visual Studio для отладки приложения.

В следующем примере отладчик Visual Studio остановлен в точке останова в коде, выполняющемся на удаленном компьютере Linux.

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

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

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

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

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

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

Где мне предлагают скачать Xamarin Studio Starter Edition. Нажав на ссылку «Цены», я вижу, что мне нужна как минимум версия Business для поддержки Visual Studio за 999 долларов в год. Нет, спасибо.

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

  • 64-разрядная версия Windows 7
  • Visual Studio Pro 2013 (может использовать 2010, если это работает лучше)
  • Raspberry Pi
  • Распбиан Хриплый
  • Моно 3.2.8
  • Запуск консольного приложения через SSH

.NET Core download website

  1. Откройте сеанс SSH с Pi, загрузите и установите двоичные файлы:

Output from dotnet --info

Advanced build settings

  1. Откройте сеанс SSH с Pi и запустите программу или запустите ее с машины разработки, используя ssh:
  1. Присоединитесь к удаленному процессу, выбрав пункт меню Отладка → Присоединить к процессу в Visual Studio. Выберите Connection type = SSH и в текстовом поле Connection target введите pi@192.168.0.xxx и нажмите Enter.

Connection target

  1. Введите пароль и нажмите кнопку «Подключиться».

Connect window

Attach to process image

Select code type

  1. Выберите процесс dotnet MyProgram.dll и нажмите кнопку "Присоединить". Первое подключение может занять несколько минут, но последующие подключения намного быстрее.

Наслаждайтесь установкой точек останова, добавлением часов, пошаговым выполнением кода и даже использованием «Set Next Statement» - почти так же быстро, как при отладке на локальном компьютере. Единственное, чего мне пока не хватает, - это «Изменить и продолжить», но этого недостаточно, чтобы выяснить, возможно ли этого достичь.

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

Я надеюсь, что это помогает.

Удачной отладки и спасибо разработчику! :)

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

Screenshot of Xamarin Studio Debugging

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

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

sudo apt-get purge mono-complete

sudo apt-get autoremove

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 update

sudo apt-get install mono-complete

моно MonoRemoteDebugger.Server / MonoRemoteDebugger.Server.exe

Screenshot

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

Читайте также: