MacのVisual Studio Codeで、Cをデバッグするのにはまったのでメモしておきます。
もっと良い方法あれば教えてほしいです...
個人的にはまった点
- 同じパスにプロジェクトは1つ。(tmpフォルダにtest.c, test.rb, test.py とかはダメ)
- 実行とビルドは分けて考える。
- デバッグオプションつけてビルドしてから、デバッグする
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++ という拡張機能をインストールする。
コーディング
#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 の編集
編集後
{
// 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で簡単に入る。
{
"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 でデバッグ開始する。