2017-08-06 15 views
0

LLDB 4.0.1でリモートデバッグを設定しようとしています。 Arch linuxにdocker(17.06.0-ce)コンテナがあります。 Dockerコンテナがprivileged modeに設定されているため、LLDBはコンテナ内で開始できます。 コンテナには、Rust実行可能なcore_serviceが含まれています。リモートLLDBデバッグ - Dockerコンテナ

コマンドは、コンテナ内で実行 (lldb) target create target/debug/core_service Current executable set to 'target/debug/core_service' (x86_64). (lldb) process launch Process 182 launched: '/srv/core_service/target/debug/core_service' (x86_64)

問題は、lldb-サーバはlldb-server platform --server --listen 0.0.0.0:1234で容器内のリモートデバッグ開始されて存在しています。 ホストlldbからコンテナlldb-serverに接続できますが、プロセスをアタッチ/作成できません。私はそれを修正するにはどうすればよい (lldb) platform select remote-linux Platform: remote-linux Connected: no (lldb) platform connect connect://localhost:1234 Platform: remote-linux Triple: x86_64-*-linux-gnu OS Version: 4.12.4 (4.12.4-1-ARCH) Kernel: #1 SMP PREEMPT Fri Jul 28 18:54:18 UTC 2017 Hostname: 099bd76c07c9 Connected: yes WorkingDir: /srv/core_service (lldb) target create target/debug/core_service Current executable set to 'target/debug/core_service' (x86_64). (lldb) process launch error: connect remote failed (Connection refused) error: process launch failed: Connection refused

コマンドは(1234年= localhostの容器にlldbサーバ)のホスト上で実行しますか?このエラーの原因となるドッカー、アーチのLinux設定はありますか?

ドッカーコンテナのlldb-server権限に問題があるようです。

ホスト(コンテナ内のlldb-server)上で実行されるコマンド (lldb) platform shell ps -A PID TTY TIME CMD 1 ? 00:00:00 bash 9 ? 00:00:00 nginx 10 ? 00:00:00 nginx 11 ? 00:00:00 lldb-server 25 ? 00:00:00 core_service 59 ? 00:00:00 lldb-server 68 ? 00:00:00 ps (lldb) platform shell kill -9 25 (lldb) platform process launch target/debug/core_service error: connect remote failed (Connection refused) error: Connection refused (lldb) platform process launch anything error: connect remote failed (Connection refused) error: Connection refused しかし、私はそれが何であるかを理解できません。 lldb-serverがコンテナ内のルートとして実行されているので、lldbを使ってシェルコマンドを実行できます。

+0

てみを処理して見ることができます助けてくれる?私はそれがそうであるとは確信していません –

+0

@TarunLalwani私は '--cap-add = ALL'で試しましたが、それでも同じ問題があります。 – Adiqq

+0

私の最新の回答が役立つかどうかを確認 –

答えて

0

これは、サーバーがホスト上のプロセスを認識できないことが原因である可能性があります。依然として独自のPID名前空間にラップされています。あなたはLLDBサーバを起動すると、ホストのPID名前空間を使用し

docker run --pid=host --privileged <yourimage> 

うまくいけば、これはあなたのコンテナが、すべてのホストは、 `= ALL`も--cap-追加し、その場合の参照の追加

+0

私はそれを試しましたが、実行可能ファイルとlldb-serverの両方がコンテナ内で実行されていました。私が 'docker exec -it/bin/bash'を使ってlldbを実行すると、問題なくプロセスを起動できるので、変です。問題はlldb-serverでのみ発生します。今私は '--pid = host'をセットしてホスト上でこのプロセスを見ることができたので、ホストlldbから接続しようとしましたが、どちらも動作しませんでした。同じエラーがありました。 – Adiqq

関連する問題