VSCodeでC++デバッグ(Windows)

# 概要

Visual Studio Codeを使ってVC++のデバッグ＋ビルドを行う方法
CMakeの使い方等はこの記事には載せませんので注意してください。
また、記事に対するもっと良い方法等があれば是非コメントをお願い致します。

# 拡張機能インストール
↓の拡張機能をインストールを行ってください

## [C/C++](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools)
C/C++のIntelliSense、デバッグ等を行う拡張機能
まだプレビュー版なので注意
![image](https://qiita-image-store.s3.amazonaws.com/0/66029/f86addf5-af71-cbcb-cd67-b6799368e6e4.png)

## [CMake Tools](https://marketplace.visualstudio.com/items?itemName=vector-of-bool.cmake-tools)
CMake周りのコマンドを提供してくれる拡張機能
![image](https://qiita-image-store.s3.amazonaws.com/0/66029/b271e535-4e60-def5-45fb-5d60639af6f6.png)

## [CMake](https://marketplace.visualstudio.com/items?itemName=twxs.cmake)
CMakeLists.txt用のIntelliSenseを提供してくれる拡張機能
![image](https://qiita-image-store.s3.amazonaws.com/0/66029/f17c1d8a-f1fd-f0f9-73ef-37b25272a432.png)

# CMakeインストール

[CMake](https://cmake.org/download/)←のリンクから対象のCMakeのインストーラーを探してインストールを行ってください

CMakeのパスが通っていない場合はユーザー設定orワークスペース設定にパスを設定すること

```json:settings.json
// 既定の設定を上書きするには、このファイル内に設定を挿入します
{
    // CMake のパスが通っていない場合はパスを通す
    "cmake.cmakePath": "C:/Program Files/CMake/bin/cmake.exe"
}
```

# プロジェクト作成

下記の手順でCMakeのプロジェクト?を作る  

1. コマンドパッドから">CMake: Quick Start"を入力  
![image](https://qiita-image-store.s3.amazonaws.com/0/66029/30f892d8-295f-d588-970f-845466e8bcbf.png)
2. プロジェクト名を入力してEnterキーを押す 
![image](https://qiita-image-store.s3.amazonaws.com/0/66029/3a1c0d47-e6dc-a083-59f8-ca39163bb24b.png)
3. ライブラリor実行ファイルかを選ぶ  
![image](https://qiita-image-store.s3.amazonaws.com/0/66029/2186bbf5-a4d4-6f3b-60a7-2442742ae936.png)

# C/C++の設定ファイル作成

1. C/C++のIntelliSense用の設定ファイルを作成
コマンドパッドに">C/Cpp: Edit Configurations"を入力して設定ファイルを作成
"ワークスペースルート/.vscode/c_cpp_properties.json"が作られます
![nTkObddjWH.gif](https://qiita-image-store.s3.amazonaws.com/0/66029/5d41001d-cc74-3f30-3acb-6c7d3e8985d0.gif)


2. デバッグ実行用の設定ファイルを作成
デバッグタブの歯車ボタンを押す。
「構成の選択」の欄から"C/Cpp:Edit Configurations"を選ぶ
![image](https://qiita-image-store.s3.amazonaws.com/0/66029/3751abcc-e387-4037-2061-b85b1de42618.png)

# CMakeでのビルド

1. コンフィグレーションを変更
ステータスバーの"CMake:プロジェクト名:構成名:Ready"ボタンを押す
![image](https://qiita-image-store.s3.amazonaws.com/0/66029/f48e9413-6519-2bcf-1292-e6fa55120914.png)  
対象の構成を選択する  
![image](https://qiita-image-store.s3.amazonaws.com/0/66029/562cf37d-6803-d2d4-e380-26dd7ce2ca78.png)
2. ビルドボタンを押す
![image](https://qiita-image-store.s3.amazonaws.com/0/66029/b411a641-8674-5ab9-c2e4-64beaef72211.png)

# デバッグ設定ファイルの編集
![nTkObddjWH.gif](https://qiita-image-store.s3.amazonaws.com/0/66029/3b6284b1-8bbd-25b8-462a-da6ed4102ea1.gif)
![nTkObddjWH.gif](https://qiita-image-store.s3.amazonaws.com/0/66029/b8944fbf-3d10-a042-02fa-1a54784d23f6.gif)

↑の項目で作成するとprogramのexeのパスを入力するように求められるのでexeのパスを入力します。
↓は入力例です

```json:.vscode/launch.json
{
	"version": "0.2.0",
	"configurations": [
		{
			"name": "C++ Launch (Windows)",
			"type": "cppvsdbg",
			"request": "launch",
			"program": "${workspaceRoot}/build/Debug/Sandbox.exe",
			"args": [],
			"stopAtEntry": false,
			"cwd": "${workspaceRoot}",
			"environment": []
		}
	]
}
```

# デバッグ

ここまで行うと、F5ボタンでデバッグ実行が行えるはずです。
以上お疲れ様でした。
![image](https://qiita-image-store.s3.amazonaws.com/0/66029/64d814ff-7635-4c0c-634f-594bb7decfd8.png)


# 自作コンテナなどのデバッグ

natvisファイル(ネイティブ オブジェクトのカスタム ビュー)に対応しています。

* natvisに関しては以下を参照  
[Microsoft公式ドキュメント](https://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0ahUKEwjEkdWirMnRAhXGybwKHe0fBhgQFggaMAA&url=https%3A%2F%2Fmsdn.microsoft.com%2Fja-jp%2Flibrary%2Fjj620914.aspx&usg=AFQjCNG71lJcoabvg_Q5rXja0JGU22eMXQ&sig2=cbiHu1icAfG487UjVqKijw&bvm=bv.144224172,d.dGc)  
[.natvisを使ってVisual Studioのデバッグを見やすくする](http://qiita.com/bigengelt/items/91a4eff6a8385a30f6ae)


launch.jsonにnatvisファイルへのパスを追加するとデバッガが見やすくなる

```diff:.vscode/launch.json
	"cwd": "${workspaceRoot}",
	"environment": [],
	// 参照するnatvisファイルへのパス
++	"visualizerFile": "${workspaceRoot}/test.natvis"
}
```

![debugn_atvis.gif](https://qiita-image-store.s3.amazonaws.com/0/66029/027d9a59-409b-2073-0e98-ebc80b1bceef.gif)