MacのVisual Studio Codeで、Cをデバッグするのにはまったのでメモしておきます。
もっと良い方法あれば教えてほしいです...
#個人的にはまった点
-
同じパスにプロジェクトは1つ。(tmpフォルダにtest.c, test.rb, test.py とかはダメ)
-
実行とビルドは分けて考える。
-
デバッグオプションつけてビルドしてから、デバッグする
同じパス上で複数の言語のテストコード書いてたら、ビルドに成功したり失敗したりして混乱してました。
以下ファイルを各プロジェクト毎に設定する必要あり。
.vscode/tasks.json
.vscode/launch.json
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 でデバッグ開始する。