LoginSignup
7
2

More than 3 years have passed since last update.

【Rust】VSCodeを使ったDockerコンテナ上のRustアプリケーションをデバッグする方法

Last updated at Posted at 2020-08-01

はじめに

最近Rustを触り始めて、コンパイラに怒られる日々を送っているTomoProgです。
この記事ではVSCodeを使い、Dockerコンテナ上で構築したRustアプリケーションをデバッグする方法を説明します。

この記事の対象者

  • Docker上のRustアプリケーションのデバッグ方法を知りたい方

前提

Rustアプリケーションが起動するDockerコンテナが起動していることを前提に話を進めます。
こちらの記事を参考にする場合はDockerコンテナを起動した状態で試してみてください。

筆者の環境

筆者がデバッグ環境を構築した際の環境を載せておきます。
この環境通りでなくても、VSCodeとDockerがインストールされていれば構築できると思いますので、試してみてください。

  • OS
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04.1 LTS"
  • VSCode
$ code -v
1.47.2
  • Docker
docker -v
Docker version 19.03.12, build 48a66213fe

VSCodeからDockerコンテナに接続する

まずはVSCodeからDockerコンテナに接続できるようにします。
Dockerコンテナへの接続にはRemote-Containersという拡張機能を使います。
Remote-ContainersVSCode Remote Developmentの機能の1つで、この拡張機能を使うことで、Dockerコンテナ内のファイルを直接操作できたり、VSCodeの拡張機能をコンテナ内にインストールできるようになります。
image.png
インストールが終わると画像のように画面の左下に緑色のアイコンが追加されます。
image.png
このアイコンを押すと、Remote-Containersのメニューが表示されるので、Attach to Running Container...を選択します。
image.png
選択すると起動しているDockerコンテナが表示されますので、Rustアプリケーションが起動しているDockerコンテナを選択しましょう。
image.png
VSCodeが新しく立ち上がり、左下の緑色のアイコンが選択したコンテナになっていれば接続成功です。
image.png
もし、以下のようなメッセージが出た場合はdockerコマンドをsudoなしで使用できるようにする必要があります。こちらを参照し設定してみてください。
image.png

Docker上のRustアプリケーションがあるフォルダを開く

次はRustアプリケーションがあるフォルダを開きます。
VSCodeのエクスプローラからフォルダーを開くを選択し、Dockerコンテナ内のRustアプリケーションのフォルダを指定します。
筆者の環境では/work/hello/がRustアプリケーションのフォルダなのでここを指定しています。
image.png
画像のように指定したフォルダの中身がVSCodeのエクスプローラに表示されれば完了です。
image.png

デバッガをインストールする

次はデバッガをインストールしていきます。
デバッガにはCodeLLDBという拡張機能を使います。
CodeLLDBLLDBというデバッガをVSCodeで利用できるようにする拡張機能です。
image.png

インストール完了後、インストールされている拡張機能を確認し、画像のようにLOCALではなくCONTAINERの方にCodeLLDBがインストールされていればデバッガのインストールは完了です。
image.png

launch.jsonを作成する

LLDBを使用したデバッグができるようにlaunch.jsonを作成します。
実行タブを開き、launch.jsonファイルを作成しますを選択し、LLDBを選択します。
image.png
Cargo.tomlが存在すると以下のようなメッセージが表示されるため、「はい」を選択します。
image.png
「いいえ」を選択してもlaunch.jsonは作成されますが、「はい」にすると環境に適したlaunch.jsonを自動で作成してくれるため、非常に便利です。
この記事では「はい」を押して自動生成されたlaunch.jsonを使用しています。

画像のようにエディタにlaunch.jsonが表示されれば作成完了です。
image.png

ここまで設定すればデバッグ環境の構築は完了です。

デバッグする

それでは早速デバッグしてみましょう。
プログラムを一時停止したいところにブレークポイントを設定し、画像左上の再生ボタンを押せばデバッグが始まります。
ブレークポイントはエディタの行番号の少し左をクリックすると、画像のように赤い丸が表示されます。
image.png
画像のように設定したブレークポイントの位置でプログラムが止まれば成功です!
image.png
あとはウォッチ式に変数を追加したり、ステップ実行してみたり色々試してみてください。

まとめ

VSCodeを使ってDockerコンテナ上のRustアプリケーションのデバッグ方法をまとめました。
Dockerコンテナ上のデバッグは何かと面倒なイメージでしたが、VSCode Remote Developmentが登場したことにより、かなり簡単に設定できるようになり感動しました。

それでは良いRustライフを!

TomoProg

7
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
2