VS Code 左端のバー(アクティビティバー)から四角が 4 つ並んだ拡張機能のボタンを選び、検索バーに「C++」と入力する。そこで出てくる「C/C++ Extension Pack」をインストール。
macOS で gdb を使用するのはかなり面倒なので、lldb の利用を推奨。基本的なコマンド体系は gdb と同じなので安心して良い。
-
ソースコードがあるフォルダを VS Code で開く。
-
VS Code のアクティビティバー(左端の縦のバー)から「実行とデバッグ」を選択し、「launch.json ファイルを作成します」をクリック。メニューが出てくるのでどれかを選択(Chrome などいろいろなものがあるが、どれを選んでも良い。何も聞かれずにいきなり
launch.json
が作られる場合もある)。 -
.vscode/launch.json
というファイルができているので、これを例えば以下のように編集する(program
は各自のインストール先に置き換える)。{ "version": "0.2.0", "configurations": [ { "name": "C/C++: debug", "type": "cppdbg", "request": "launch", "program": "/home/denjo/gnuplot_install/bin/gnuplot", // ビルドしたバイナリへの絶対パス "args": ["a.gnuplot"], // 実行時引数 "stopAtEntry": true, // 実行後すぐに一旦止める "cwd": "${workspaceFolder}", // 実行時の作業ディレクトリ "MIMode": "gdb" // 利用するデバッガ。macOS の場合は lldb 推奨 } ] }
gnuplot の場合、引数としてファイル名(ここでは a.gnuplot
)を渡すことでそのファイルを読み込むことができる。この時ファイルは相対パスとみなされ、コマンドが実行されたときの作業ディレクトリ(ターミナルなら pwd
で出てくるディレクトリ)を基準に解釈される。VS Code でデバッグする場合、作業ディレクトリは launch.json
の cwd
で指定する。上の例では ${workspaceFolder}
、すなわち VS Code で開いているディレクトリが基準になるので、そのディレクトリの直下に a.gnuplot
を置けば良い。
-
アクティビティバーの「実行とデバッグ」を選択し、実行ボタン(三角)を押す
-
エディタがデバッグモードに切り替わり、上部に以下のような操作バーが出てくる。左から
- 続行(gdb での
c
) - ステップオーバー(gdb での
n
) - ステップイン(gdb での
s
) - ステップアウト(gdb での
fin
) - 再起動(gdb での
r
) - 停止(gdb での
exit
)
である。
- 続行(gdb での
エディタ上で変数にマウスをホバーさせれば変数の中身が表示される。また、デバッグを開始すると開く「デバッグコンソール」に変数や式を入力するとその値を表示できる。特定の式や値の変化を監視したい場合、サイドバーの「ウォッチ式」に入力すると良い。
ポインタを配列として表示したい場合、入力すべき式は利用しているデバッガによって異なる。
例 : int*
である array
を長さ 10 の int
の配列として表示したい場合
- gdb :
*array@10
- lldb :
*(int(*)[10])array
エディタ上で行番号の左側をクリックするとその行にブレークポイントが設置できる。ブレークポイントの一覧はサイドバーにある。
行番号の左側を右クリックすると、特定の条件が満たされたときのみ止まる条件付きブレークポイントや、停止せずにログ出力を行うログポイントを設置できる。
上記の設定ではプログラム実行中に標準入力を渡すことができない。必要な場合には以下の行を launch.json
に追加する。この設定をするとターミナルアプリが起動し、そちらから入力できるようになる。
{
"version": "0.2.0",
"configurations": [
{
...,
"externalConsole": true // この行を追加
}
]
}
デバッガ(gdb, lldb)のその他のコマンドを使いたい場合は、デバッグコンソールで -exec
に続けて入力すれば良い。
いわゆる検索(grep)は以下の方法でできる。
Ctrl/Cmd + Shift + F
: ワークスペース全体で検索Ctrl/Cmd + F
: 今開いているファイル内で検索
この場合コメント内のキーワード等も検索に引っかかるので、関数等を検索したい場合は次の方法を使う。
プログラム中に定義されているシンボル(変数、関数など)を検索したい場合は以下の方法でできる。
Ctrl/Cmd + T
: ワークスペース全体で検索Ctrl/Cmd + Shift + T
: 今開いているファイル内で検索
「3.18 etags コマンド + find-tag で定義へ飛ぶ」に相当。エディタ内に表示されている変数や関数の定義元・参照先を知りたい場合は、単に右クリックして対応するメニューを選べば良い。