1. cファイルの作成
まずフォルダとcファイルを作成します
ここではhelloフォルダとhello.cです
hello.c
※cファイルはShift-Jisで保存してください(UTF-8で保存した場合はtasks.jsonを編集する必要があります)
これは3. tasks.jsonの作成で後述します
hello.c
#include <stdio.h> int main() { int i; for(i=0;i<10;i++) printf("ハロー!\n"); return 0; }
2. c_cpp_properties.jsonの作成
c_cpp_properties.jsonファイルを作成するには以下の手順を行います
Ctrl+Shift+Pを押します
コマンドパレットが開くので「c/c++:e」と入力すると以下リストが現れます
「C/C++:構成の編集(UI)」を選択します
「C/C++ Configurasions」のUI(ユーザーインターフェース)が開きます
「コンパイラ パス」の▼を押してリストを表示する
「C:/MinGW/bin/gcc.exe」を選択します
「IntelliSenseモード」がエラーになるので▼を押してリストを表示します
リストから「gcc-x64」(gcc-x86でも可)を選択します
暫くすると「c_cpp_properties.json」ファイルが自動的に作成されます
エクスプローラーの「c_cpp_properties.json」ファイルを確認します
3. tasks.jsonの作成
再びCtrl+Shift+Pを押します
コマンドパレットが開くので「tasks:c」と入力すると以下リストが現れます
「タスク:タスクの構成」を選択します
続けて「テンプレートからtasks.jsonを生成」を選択
「Others 任意の外部コマンドを実行する例」を選択
再びコマンドパレットに「tasks:c」と入力すると絞り込まれた候補がリストに現れるのでその中から「タスク:タスクの構成」を選択します
「構成するタスクを選択」のリストから「shell gcc.exe build active file」を選択
下の画像のような「tasks.json」が作成されます
もし違う内容のものが作成されたら「tasks.json」を削除して作成し直してください
※cファイルをUTF-8で保存している場合は「tasks.json」を編集する必要があります
具体的にはtasks項目のargsパラメーターに「-fexec-charset=CP932」を追加します
"args": [ "-g", "${file}", "-o", "${fileDirname}\\${fileBasenameNoExtension}.exe" ],
↓
"args": [ "-g", "${file}", "-o", "${fileDirname}\\${fileBasenameNoExtension}.exe", "-fexec-charset=CP932" ],
4. launch.jsonの作成
launch.jsonファイルを作成するには以下の手順を行います
Ctrl+Shift+Dを押します
左の実行ボタンがアクティブになり下の画像のようになります
赤丸の「launch.json ファイルを作成します」をクリックします
「環境の選択」のリストが現れるので「C++ (GDB/LLDB)」を選択します
下の画像の「launch.json」が作成されます
5. launch.jsonの編集
launch.jsonを編集するためにlaunch.jsonを選択します
画像の赤丸の所を編集します
下記のパラメーターを変更します
"program": "プログラム名を入力してください (例: ${workspaceFolder}/a.exe)", ↓ "program": "${workspaceFolder}/hello.exe", "miDebuggerPath": "/path/to/gdb", ↓ "miDebuggerPath": "C:\\MinGW\\bin\\gdb.exe",
6. 実行ファイルの作成
hello.cファイルをアクティブ(選択・表示)します
Ctrl+Shift+Bを押します
コマンドパレットに「実行するビルド タスクを選択」にリストが現れるので「Shell:gcc.exe build active file」を選択します
hello.exeが作成されました
7. デバッグを開始する
hello.cファイルをアクティブ(選択・表示)にして任意の場所にブレークポイントを置いてください
コードペインの行番号の左をクリックするかデバッグしたい行にカーソルを置いて「F9」キーを押すとブレークポイントができます
ブレークポイントが置かれるとコードペインの行番号の左に赤い●が現れます
ブレークポイントは幾つでも置けます
メニューの「実行」→「デバッグの開始」または「F5」キーを押します
するとデバッグが開始されます
黄色いラインがブレークポイントで止まったらデバッグ環境の構築は成功です
8. 実行状態(結果)の表示
launch.jsonを編集するためにlaunch.jsonを選択します
(argsに日本語を使用しそれを表示した場合にexternalConsoleを使用すると文字化けするので注意[解決方法:stdlib.hをインクルードしsystem("chcp 65001");をprintfより前に追加することで文字化けが解消する])
下記のパラメーターを変更します
"externalConsole": false, ↓ "externalConsole": true,
ターミナル(端末)が別窓で開き実行状態(結果)が表示されます
入力がある時にはここで入力できます
特にエラーが無ければデバッグ環境の構築成功です
9. デバッグでバグがありcファイルを編集したとき
6.の実行ファイルの作成「Ctrl+Shift+B」をしてからデバッグ「F5」をして下さい
デバッグができるまでの手順は以上です
お疲れさまでした
c_cpp_properties.json
{ "configurations": [ { "name": "Win32", "includePath": [ "${workspaceFolder}/**" ], "defines": [ "_DEBUG", "UNICODE", "_UNICODE" ], "windowsSdkVersion": "10.0.18362.0", "compilerPath": "C:/MinGW/bin/gcc.exe", "cStandard": "c11", "cppStandard": "c++17", "intelliSenseMode": "gcc-x64" } ], "version": 4 }
tasks.json
{ "version": "2.0.0", "tasks": [ { "type": "shell", "label": "shell: gcc.exe build active file", "command": "C:/MinGW/bin/gcc.exe", "args": [ "-g", "${file}", "-o", "${fileDirname}\\${fileBasenameNoExtension}.exe" ], "options": { "cwd": "C:/MinGW/bin" }, "problemMatcher": [ "$gcc" ], "group": "build" } ] }
launch.json
{ // IntelliSense を使用して利用可能な属性を学べます。 // 既存の属性の説明をホバーして表示します。 // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "(gdb) 起動", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/hello.exe", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": true, "MIMode": "gdb", "miDebuggerPath": "C:\\MinGW\\bin\\gdb.exe", "setupCommands": [ { "description": "gdb の再フォーマットを有効にする", "text": "-enable-pretty-printing", "ignoreFailures": true } ] } ] }