Mac の Visual Studio Codeで C/C++ をデバッグするまで(OSX10.11.6, VSCode1.4.0)

  • 23
    いいね
  • 0
    コメント

MacのVisual Studio Codeで、Cをデバッグするのにはまったのでメモしておきます。
もっと良い方法あれば教えてほしいです...

個人的にはまった点

  1. 同じパスにプロジェクトは1つ。(tmpフォルダにtest.c, test.rb, test.py とかはダメ)
  2. 実行とビルドは分けて考える。
  3. デバッグオプションつけてビルドしてから、デバッグする

1.
同じパス上で複数の言語のテストコード書いてたら、ビルドに成功したり失敗したりして混乱してました。
以下ファイルを各プロジェクト毎に設定する必要あり。
.vscode/tasks.json
.vscode/launch.json

2.
Sublime Text3と同じ感覚で実行しようとして混乱してました。
実行はRunnerという拡張機能をインストールして行いました。
この記事の通りに設定して行いました。
Mac の Visual Studio Code で C/C++/C# を実行する

3.
当然ですが、clang でのコンパイルオプションにデバッグ情報付加する必要あります。

デバッグまで

C/C++ 拡張機能インストール

2016.08.14追記
command+shift+p > ext install > c/c++
一覧に出てくる、Microsoft製の C/C++ という拡張機能をインストールする。

コーディング

test.c
#include <stdio.h>

int main() {
    int a = 5;
    int b = 10;
    int c = a * b;
    printf("%d\n", c);
    return 0;
}

ビルド(失敗)

command+shift+b でビルドを試みますが、失敗します。
タスクランナーが構成されていません。 とメッセージが出るので、
タスクランナーの構成 > Others を選択。

tasks.json の編集

編集後

tasks.json
{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "0.1.0",
    "command": "clang",
    "isShellCommand": true,
    "args": [
        "test.c", // プログラムファイル
        "-g",     // デバッグ情報付加する。ないとデバッグできない。
        "-O0",    // コンパイル速度重視
        "-m32"    // 64bitの場合
    ],
    "showOutput": "always"
}

ビルド

command+shift+b でビルドする。以下ファイルができる。
./a.out.dSYM
./a.out

launch.json の編集

F5 を押す。
環境の選択 > C++(GDB/LLDB)

launch.jsonを編集する。
C/C++ それぞれの "program"行を変更する。
デバッガにLLDBでなくGDB使用したい場合は適宜変更する。homebrewで簡単に入る。

launch.json
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "C++ Launch",
            "type": "cppdbg",
            "request": "launch",
            "targetArchitecture": "x64",
            // "program": "enter program name, for example ${workspaceRoot}/a.out",
            "program": "${workspaceRoot}/a.out",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceRoot}",
            "environment": [],
            "externalConsole": true,
            "linux": {
                "MIMode": "gdb"
            },
            "osx": {
                "MIMode": "lldb"
                // "MIMode": "gdb" // デバッガにGDBを使用したい場合。homebrewで brew install gdb で入る
            },
            "windows": {
                "MIMode": "gdb"
            }
        },
        {
            "name": "C++ Attach",
            "type": "cppdbg",
            "request": "launch",
            "targetArchitecture": "x64",
            // "program": "enter program name, for example ${workspaceRoot}/a.out",
            "program": "${workspaceRoot}/a.out",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceRoot}",
            "environment": [],
            "processId": "${command.pickProcess}",
            "externalConsole": false,
            "linux": {
                "MIMode": "gdb"
            },
            "osx": {
                "MIMode": "lldb"
            },
            "windows": {
                "MIMode": "gdb"
            }
        }
    ]
}

デバッグ開始

F9 でブレイクポイント設定できる。
command+shift+d でデバッグウィンドウにできる。
F5 でデバッグ開始する。

スクリーンショット 2016-08-12 17.12.27.jpg