Я пытаюсь скомпилировать Rust-программу «hello world» внутри контейнера Docker, а затем удаленно отлаживать ее с помощью GDBServer и CLion, но я не думаю, что gdbserver
запускается правильно.Когда я запускаю его, я не получаю ожидаемых сообщений «процесс запущен» и «прослушивание порта ...»;Я ничего не получаю.
Я успешно сделал это с Raspberry Pi в моей домашней сети, но не могу заставить его работать при использовании Docker.
Моя конечная цель - развернуть этот Docker.Контейнер на капле Digital Ocean и отлаживать удаленно с моей локальной машины.Пока у меня Docker работает на локальной машине.
Я работаю на Mac (Mojave), запускаю Docker (v18.09) и раскручиваю контейнер Docker, который образ, собранный из Debian с установленным Rust и gdbserver
.GDBServer и Rust устанавливаются следующим образом:
# install curl (needed to install rust)
apt-get update && apt-get install -y curl gdb g++-multilib lib32stdc++6 libssl-dev libncurses5-dev
# install rust + cargo nightly
curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain nightly
Я запускаю контейнер с docker run --rm -it -v $(pwd):/source -p 7777:7777 schickling/rust
, который по умолчанию запускается bash
.
Оказавшись в контейнере, я компилирую программу Rust, используяrustc -g -o ./program ./src/main.rs
, который выводит один файл: program
.Я могу нормально запустить программу (она выводит только Hello World
).
Когда я запускаю gdbserver localhost:7777 ./program
в Docker, терминал просто зависает.Я оставил это на 20 минут.Я не могу подключиться к нему из CLion, и даже ping
не работает с моего Mac.Я попытался добавить флаг --debug
, который выводит my_waitpid (11, 0x0)
, а затем зависает.Я также пробовал :7777
, 127.0.0.1:7777
и host:7777
.Я пробовал несколько разных портов.
Я не уверен, где моя проблема.Возможно, GDBServer запущен и проблема в моей настройке CLion, но я сомневаюсь в этом.У меня есть настройки отображения пути, и target remote args
- это tcp:127.0.0.1:7777
.Я просто получаю Connection closed
.Файл символов и Sys Root пусты, но это работало в прошлом с моим Raspberry Pi.