Я запускаю процесс внутри docker контейнера, который необходимо отладить. Процесс запускается в точке входа docker через dlv debug /go/src/path/to/package --headless --listen=:2345 --log
с целью последующей отладки в VSCode.
Контейнер docker запускается через docker run --rm -it -p 2345:2345 my_image:tag
. Примечание: порт delve открыт.
В VSCode я определяю launch.json
следующим образом:
{
"version": "0.2.0",
"configurations": [
{
"name": "Attach remote",
"type": "go",
"request": "attach",
"mode": "remote",
"port": 2345,
"host": "127.0.0.1",
"apiVersion": 1
}
]
}
При запуске конфигурации отладки VSCode "attach remote" я получаю
Это не совсем ясно, но этот интерфейс заставляет меня поверить, что я теперь подключен к удаленному безголовому отладчику и готов к отладке. У меня есть одна определенная точка останова, которая, как я знаю, будет затронута запросом, который я могу отправить удаленному процессу. Я отправляю этот запрос, получаю результат, и эта точка останова никогда не срабатывает, указывая, что я еще не достиг удаленной отладки.
Что-то не так с моей конфигурацией VSCode «присоединить удаленную»? Я могу выполнить отладку из командной строки с помощью dlv connect :2345
и на самом деле просто отладить удаленный процесс, что указывает на работоспособность автономного сервера. Я бы предпочел отладку с исходным кодом, хотя в VSCode.