4
5

More than 3 years have passed since last update.

コンテナデバッグの底力を感じてください 〜VSCodeの品格

Last updated at Posted at 2019-12-18

概要

Dockerfileを用意してコンテナ上で開発するときの話。

  • コンテナ内にローカルのフォルダをマウントして、ローカルファイルを編集してもいいけど、コンテナ内のファイルを直接触りたい。でもvimでいつも触ってます。。

  • コンテナ内のC++ファイルをVSCodeでデバッグできたら嬉しいけど、結構めんどくさかったから諦めてしまいました。。

そんなあなたに朗報!!!
マイクロソフト大先生がすごい拡張機能を出してくれました!!素敵やん!!

VSCodeによる デバッグ環境の構築

ここでは、VSCodeを使って、

  1. コンテナ内にアクセスして、ローカルファイルと同じ感覚で編集する。
  2. 上の環境でC++のソースコードをデバッグ(ブレークポイントなど)する。 ことを目標とします。

1 コンテナにリモートアクセス

まず、以下のマイクロソフトのRemote Development という拡張機能をインストールしてください。

vsremote.png

インストールするとVSCodeの左下に緑のOpen a remote windowというボタン(下図)が出てくるので、クリックし、つなぎたいDockerコンテナを選択します。
vsremote1.png

すると、新しいウィンドウが開き、ここで編集するとコンテナ内のファイルを直接編集できます。
めっちゃ簡単やん、、すばらしい、、、、

2 C++ のデバックをVSCodeで行う

F1を押して、tasksと入力すると、configure tasks みたいなのが出てくるので、クリックするとtasks.json に飛びます。
そして、tasks.json

tasks.json
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "echo",
            "type": "shell",
            "command": "自分がいつもc++ファイルをビルドするときに打つコマンドを書いてください〜 例)cmake. && make とか",
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}

上のように編集します。このとき、コマンドは.vscodeフォルダがあるところからの相対パスで書くことに注意!
tasks.json を実行してc++のファイルをビルドしたいときは、Ctrl + Shift + B で実行できます。

さらに、F1から、launchとすると、launch.json を作ることができます。そこに、

launch.json
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "デバッグしたいビルド後のファイルへのパスを書きましょう〜",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

上のようにlaunch.jsonを書くと、左の虫のマークから、デバッグができます。(いつものように、F5から実行。)
このとき、コンテナ内にgdbが入っていることを確認してください。入っていないときは、


apt-get install gdb

で簡単にインストールできます。

結果 コンテナ上でC++のデバッグ簡単にできるやん!!

vsremote2.png

マイクロソフト先生ありがとう....

おわり。

4
5
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
4
5