Help us understand the problem. What is going on with this article?

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

概要

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

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

おわり。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした