概要
Dockerfileを用意してコンテナ上で開発するときの話。
-
コンテナ内にローカルのフォルダをマウントして、ローカルファイルを編集してもいいけど、コンテナ内のファイルを直接触りたい。でもvimでいつも触ってます。。
-
コンテナ内のC++ファイルをVSCodeでデバッグできたら嬉しいけど、結構めんどくさかったから諦めてしまいました。。
そんなあなたに朗報!!!
マイクロソフト大先生がすごい拡張機能を出してくれました!!素敵やん!!
VSCodeによる デバッグ環境の構築
ここでは、VSCodeを使って、
- コンテナ内にアクセスして、ローカルファイルと同じ感覚で編集する。
- 上の環境でC++のソースコードをデバッグ(ブレークポイントなど)する。
ことを目標とします。
1 コンテナにリモートアクセス
まず、以下のマイクロソフトのRemote Development
という拡張機能をインストールしてください。
インストールするとVSCodeの左下に緑のOpen a remote window
というボタン(下図)が出てくるので、クリックし、つなぎたいDockerコンテナを選択します。
すると、新しいウィンドウが開き、ここで編集するとコンテナ内のファイルを直接編集できます。
めっちゃ簡単やん、、すばらしい、、、、
2 C++ のデバックをVSCodeで行う
F1を押して、tasksと入力すると、configure tasks
みたいなのが出てくるので、クリックすると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
を作ることができます。そこに、
{
"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++のデバッグ簡単にできるやん!!
マイクロソフト先生ありがとう....
おわり。