Этот вопрос касается удаленной отладки кода golang с использованием отладчика delve. В частности, как отключить отладчик клиента без уничтожения удаленного процесса.
Я запускаю процесс внутри контейнера docker, который необходимо отладить. Процесс запускается в точке входа docker через dlv debug /go/src/path/to/package --headless --listen=:2345 --log
Контейнер docker запускается через docker run --rm -it -p 2345:2345 my_image:tag
Со своей рабочей станции я подключаюсь к серверу без головы delve через
$dlv connect :2345
Type 'help' for list of commands.
(dlv)
На этом этапе я делаю некоторую отладку. Когда я закончу, я хотел бы иметь возможность отключиться от безголового сервера, не прерывая отлаживаемый процесс.
(dlv) exit
К сожалению, приведенная выше команда отключает клиента delve от безголового сервера, а также убивает удаленного процесс, который я отлаживал, и поскольку это была точка входа контейнера docker, контейнер останавливается. Я хотел бы избежать отключения от уничтожения удаленного процесса, как?
Я посмотрел на аргументы (dlv) exit
и не вижу ни одного, который бы помог.
(dlv) help exit
Exit the debugger.
exit [-c]
When connected to a headless instance started with the --accept-multiclient, pass -c to resume the execution of the target process before disconnecting.
(dlv) exit -c
Command failed: not connected to an --accept-multiclient server