いろいろと躓いたので備忘を含めたメモメモ。
まずWSLやらなんやらをインストールする。
つまづきポイント
CMakeプロジェクトの時に以下のようなエラーが出たときは、WSLとwindows側で時刻の同期ができてない可能性がある。ninja-buildのissuesに書いてあった。
[build] [ 50%] Building CXX object
[build] [100%] Linking CXX executable hogehoge
[build] [100%] Built target hogehoge
WSL側をntpで標準時刻に同期する。
sudo ntpdate ntp.nict.jp
いよいよ本題(Cmakeは使わないver)
main関数を適当に作る。
#include <iostream>
int main(int, char**){
int minaideyo = 0;
char minaideyo_str[128] = "iyan";
std::cout << "Hello gdb on vscode!\n";
return 0;
}
VSCodeでCtrl+Shift+Pを押して、コマンドパレットを開き、Configuration Tasksを探す。クリックするとおおむね以下のようなファイルができるはず。ビルドするときに何を唱えるかということが書いてある。labelがポイント。
{
"version": "2.0.0",
"tasks": [
{
"label": "My Make for WSL",
"type": "shell",
"command": "g++",
"args": [
"-g",
"${file}",
"-o",
"HelloVSC"
],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
VSCodeの左の三角ボタン(デバッグと実行)を押して、構成がなんたらを選ぶとおおむね以下のような設定ファイルが生成される。立ち上げる時のgdb設定を書いているようだが、preLaunchTaskのところにTasks.jsonのlabelで書いた名前を入れておくことがポイント。gdb起動する前にTasks.jsonの通りにビルドしろよって感じか。ここまでやって、再生ボタンを押すとうまくいくと、デバッグモードでプログラムが立ち上がる。ブレークポイントやらなんたらを設定すると変数のウオッチも可能だ。本家Visual Studioでもやってみたが、こちらのほうが簡単に設定できる印象。VSCodeは玄人向けなんよ。つらい。が、なんとか動かすことができた。
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Hello gdb world",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/HelloVSC",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "/usr/bin/gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": false
}
],
"preLaunchTask": "My Make for WSL"
}
]
}
参考文献