WSL上のVSCodeだけどgdbでデバッグしたい

VSCodeがなかなか慣れないんだけど、最近人気だから試しておくか…

gitとかはWSL上で作業していることが多いと思うが、VSCodeはWSLと連携することができるそうで、WSL上のgdbでデバッグすることもできるようだ。

WSL での VS Code の使用を開始する
Windows Subsystem for Linux を使用してコードを作成およびデバッグするように VS Code を設定する方法について説明します。
  1. VSCodeを開いて上の検索窓に >wsl と入力
  2. コマンドのリストが出てくるので WSL: Connect to WSL を選択
    • そうすると、なんかターミナルが開いたりする
  3. あとは普通にソース管理(SOURCE CONTROL)からGitリポジトリを開いて、ファイルを開いて…
  4. デバッグするときは、実行とデバッグ(RUN AND DEBUG)を開いて、まず最初に launch.json を作る必要があるようだ

たとえば coreutils の yes コマンドをデバッグしようと思ったら、下のような設定を書いたらよい:

launch.json
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch yes.c",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceRoot}/src/yes",
            "args": ["hello","world"],
            "stopAtEntry": false,
            "cwd": "${workspaceRoot}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                "description": "Enable pretty-printing for gdb",
                "text": "-enable-pretty-printing",
                "ignoreFailures": true
                }
            ]
        }
    ]
}

で問題は "externalConsole": true にすると動かない!バグっぽいが無視されている
Set externalConsole to true does not open terminal, and the debugger just hangs. #6805

"externalConsole": false にしておけばちゃんと動く。

いやーこんなの全員はまりそうだけどな…

メモ:coreutils をデバッグするときは ./configure CFLAGS='-g -O0' のオプションをつけよう

コメント

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