Присоедините к запуску процесса внутри докеры из VS2017

Существует ли простой способ отладки процесса, выполняющегося внутри контейнера Linux на удаленном хосте, из Visual Studio?

Представьте себе сценарий, в котором у нас есть несколько служб, развернутых на некотором удаленном компьютере и работающих в док-контейнерах - среда разработки. Во время тестирования мы обнаруживаем, что внутреннее состояние одной из служб становится прерывистым, и нам необходимо выяснить, что там происходит. Мы не хотим docker-compose up локально, потому что мы не можем имитировать сценарий.

Вместо этого мы хотим присоединиться к запущенному процессу внутри контейнера.

Я прочитал несколько статей о том, как это сделать, но они либо о контейнерах Windows (https://www.richard-banks.org/2017/02/debug-net-in-windows-container.html), либо просто сбивают с толку (например, мне нужно установить sshd для подключения к нему из VS? Нужно ли устанавливать vsdbg, как описано здесь https://github.com/Microsoft/generator-docker/issues/130?)

Я попытался установить vsdbg в контейнер вместе с ssh, но Visual Studio не может найти никаких удаленных подключений (в Debug → Attach to Process).

Есть ли учебник специально для VS2017 & удаленная отладка & Docker Linux контейнеры ?

Ответ 1

Вы можете попробовать отладить с помощью gdb и ssh, как показано на этой странице: https://docs.microsoft.com/en-us/cpp/linux/connect-to-your-remote-linux-computer но это будет относиться к процессу как к собственному/неуправляемому процессу. Это в основном для отладки C++ приложений.

Для удаленной отладки управляемых процессов С#, VB, F # и т.д. Вы можете использовать "средства удаленной отладки для VS", но они предназначены только для Windows. Так что знаете, вы не можете удаленно отлаживать приложение С# на контейнере Linux. Надеюсь, что это проясняет вещи.