проблема с удаленным отладчиком lldb в контейнер докера - PullRequest
0 голосов
/ 15 декабря 2018

Программа установки - это докер-контейнер, работающий под управлением Ubuntu 16.04, clang / lldb 6.0.Я хочу иметь возможность удаленной отладки приложения, на данный момент через другой терминал вместо IDE.

Мой файл Docker

FROM ubuntu:16.04
RUN apt update
RUN apt install -y curl git nano cmake build-essential xz-utils
RUN apt install -y clang-6.0 lldb-6.0
EXPOSE 2000
CMD [ "/bin/bash" ]

Я вращаюсьМой контейнер выглядит следующим образом:

Запуск Docker --privileged --cap-add = SYS_PTRACE --security-opt seccomp = не определен -it -v ~ / Разработчик: / Developer -p 2000: 2000 -имя cpp-dev ubuntu-clang-dev

Отладка изнутри контейнера работает

Я могу успешно скомпилировать и отладить мою программу с помощью clang ++ и lldb, находясь внутри контейнера.

Как запустить мой lldb-сервер

Платформа lldb-server-6.0 --server --listen *: 2000

Сейчасиз отдельного терминала я делаю:

> lldb
> platform select remote-linux
> platform connect connect://localhost:2000
> target create test
> b main     (which returns breakpoint main at main.cpp:5)
> process launch

Ошибки: (lldb) Ошибка запуска процесса: ошибка удаленного подключения (Не удалось подключиться к порту) Ошибка: сбой запуска процесса:Не удалось подключить порт

Что я делаю не так?

1 Ответ

0 голосов
/ 22 декабря 2018

Я сам нашел.

LLDB-сервер прослушивает порт 2000 на предмет входящих соединений.При получении такого запроса он порождает отдельное «lldb g:».Этот секретный порт не открыт для внешнего мира с моего виртуального компьютера.

Самый простой трюк, который мне подходит, - это просто запустить контейнер в той же сети, что и хост.Следовательно, как только я запускаю свой контейнер с:

docker run --privileged --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -it -v ~/Developer:/Developer **--network host** --name cpp-dev ubuntu-clang-dev

, все работает нормально, и я могу запустить lldb с хоста, как объявлено.

...