WSL+vscode環境でC++をデバッグ

WSLに構築したC++開発環境にVisual Studio Codeからアクセスし、デバッグをできるようにするのが目的です。Web上にほかの情報もありましたが、いくつか躓きポイントがあったので改めて記事にします。

環境

  • WSLが使えるようになっている
  • Visual Studio Code 1.38.1
    • 拡張機能
    • C/C++ 0.25.1
    • Remote - WSL 0.39.5

WSLにC++開発環境を導入

WSLのコンソールもvscode上で開きます。vscodeを開き、F1を押してコマンドパレットにカーソルを合わせます。remote等と入力し、Remote-WSL: New Windowを探します。
wsl上でvscodeを開く
新規にウインドウが開きます(さっきのウインドウは閉じて大丈夫です)。左下にWSL: Ubuntuと書いてあればOKです。
WSL: Ubuntuで開いていることを確認。
Ctrl + @を押し、ターミナルを開きます。以下のコマンドを打ち込んで、C++開発環境とデバッガをインストールします。

sudo apt install build-essential
sudo apt install gdb

C++ファイルを作成

適当なフォルダを作り、vscodeでそちらのフォルダを開きます。例として~/work/cpp/test1フォルダを作り、そちらを開きます。
適当なフォルダを開く
エクスプローラー新規ファイルからmain.cppファイルを作りました。
main.cppファイルを作成
今回は普通のハローワールドプログラムです。

#include <iostream>

int main() {
    std::cout << "Hello world." << std::endl;
}

launch.jsonを作成

F5で実行してみようとすると環境の選択が開きます。C++ (GDB/LLDB)を選択し、g++ build and debug active fileを選択します。
F5でC++ファイルを実行
g++を選択
launch.jsonファイルができますが、とりあえず無視してmain.cppに戻り再びF5を押すとタスクg++ build active fileを見つけられませんでした。というエラーが出ます。
タスクがないというエラー

tasks.jsonを作成

F1でコマンドパレットを開き、task等で検索、タスク: タスクの構成を選び、g++ build active fileを選択します。
コマンドパレットからタスクを検索
g++のbuildタスクを選択
tasks.jsonが作られる
tasks.jsonが作られますが、これまた無視してmain.cppを開きます。

C++プログラムをデバッグ

変数を見るために少しプログラムを変えておきます。

#include <iostream>
#include <vector>

int main() {
    int a = 0;
    int b = 1;
    std::vector<int> v = {1, 2, 3, 4, 5};

    std::cout << "Hello world." << std::endl;
}

コード行数の左をクリックするか対象行でF9を押すとブレークポイントを付けることができます。F5を押すとデバッグが始まり、ブレークポイントで実行が止まります。宣言したabの値、vectorの中身も見ることができます。
WSL上のvscodeでC++ファイルをデバッグ

コメント

タイトルとURLをコピーしました