LoginSignup
8
10

More than 1 year has passed since last update.

Windows 10 + vscodeでのC/C++言語開発環境の構築(gcc+gdb または clang + lldb)

Last updated at Posted at 2020-09-22

動機

  • 講義で使用予定のVisual Studio Code 1.49.1 + C/C++ 機能拡張 1.0.0 + msys2(20200903)環境でのgdbによるデバッグがある日突然エラーで動かない問題に遭遇.
  • いずれ本家で対処される問題かもしれないし,対処されないかもしれないし,そもそも自分の環境がおかしい可能性もある.
  • めんどいのでclang + lldbで行くことにした.
  • 主に学生さん向けの情報です.一般的に価値があるかは読む人次第.
  • (2021/4/6追記)上記問題が解決されているようなのでgccとgdbを使う場合についても書いた.

注意

  • ウイルスバスター,マカフィーインターネットセキュリティ,ノートンなどのセキュリティソフトを無効化しておく.特に,ファイル保護,リアルタイムスキャンなどの機能は必ずOFFに.ウイルスバスターのように監視対象のフォルダの例外設定が可能な場合,C:\toolsフォルダを例外に設定しておきます.Cドライブ直下にtoolsフォルダがないと設定できない場合には,自分で作成しておく.
  • Windowsのログオンユーザ名が半角英数字だけであることを確認すること.
  • 32bit版OSは対象外です.これを機に64bit版OSにすることを推奨します.

0. お約束

  • 「エクスプローラー」とは,Windowsのファイルマネージャソフトです.スタートメニュー -> Windowsシステムツールの中にあります.
  • Cドライブとは,エクスプローラの左ペインにある「PC」を展開したときに現れる,〜適当な名前(Windowsとかローカルディスクとか)〜(C:)という名前のディスクです.通常,Windowsはここにインストールされています.
  • キーボードショートカットは「Ctrl + Shift + X」などと記述します.意味は「CtrlキーとShiftキーを押しながら,Xキーを押」すということです.

1. chocolateyのインストール

  1. スタートメニュー -> Windows PowerShell -> 「Windows PowerShell」アイコンを右クリックし,「管理者として実行」をクリックし,「管理者: Windows PowerShell」ウインドウを開く.「このアプリが〜許可しますか」の質問には当然だが「はい」と答えます.コマンドの入力を待っている状態では,カーソルが点滅しているのが分かる.

  2. 以下のコマンドをコピーし(コマンドの上にマウスカーソルを移動し,出てくるコピーボタンをクリック),1-1.で開いたウインドウにペースト(Ctrl + V)し,Enterキーを押す.

  3. 赤い文字のエラー表示が出ずに,カーソルが点滅する入力待ち状態になればインストール終了.ウインドウを閉じます.

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

2. 環境変数の設定

  1. 手順1-1をを繰り返して,「管理者: Windows PowerShell」ウインドウを開く.

  2. 以下のコマンドをコピー&ペーストし,Enterキーを押す.

setx PATH "$env:path;C:\tools\msys64\mingw64\bin"
  1. 以下のコマンドをコピー&ペーストし,Enterキーを押す.
setx PATH "$env:path;C:\tools\msys64\usr\bin"

PowerShellのウインドウは閉じても大丈夫です.

3. msys2のインストール

  1. 1-1の手順を繰り返して,「管理者: Windows PowerShell」ウインドウを開く.

  2. 以下のコマンドを手順1-2と同様にコピー&ペーストしてEnterキーを押す.途中英文の質問が表示される場合にはAと入力してEnterキーを押します.**回線速度や,サーバの混雑度によって時間がかかりますが,途中で終了しないように.**以下のスクリーンショットのように,入力待ち状態になるまでに,赤い文字が表示されなければ終了(ただし,一瞬赤字が表示されることがあります.これは無視しても大丈夫です.).セキュリティソフトが動いているとこの手順で失敗します.

choco install msys2 -y

スクリーンショット 2020-09-22 10.42.13.png

4. msys2のターミナルを開く

  1. 1-1の手順を繰り返して,「管理者: Windows PowerShell」ウインドウを開く.

  2. 以下のコマンドを入力しEnterキーを押す.msys2のターミナルが開きます.

C:\tools\msys64\mingw64.exe

(2023-03-23追記)キーリングをアップデートします.

pacman -Sy msys2-keyring && pacman -Su

5. コンパイラとデバッガのインストール

Visual Studio Codeそれ自体には,C/C++言語のコンパイラは含まれていませんので,別途インストールします.ここで,コンパイラとデバッガ(デバッグ作業を行うためのソフトウェア)の選択肢が2つあります.どちらを選んでも基本的な機能は変わりません.gccとgdbの組み合わせのほうが,Pythonをインストールするという工程がない分,簡単かもしれません.

5.1 gccgdbを使う場合

5.1.1 gccgdbのインストール

手順3-2で開いたmsys2のターミナルにて,以下のコマンドをコピー&ペーストして,Enterキーを押す.**ただし,ペーストするには,msys2のターミナルウインドウ上で右クリックを押し,表示されるコンテキストメニューから「Paste」をクリックします.**途中,「インストールしますか?」などの質問が表示された場合には,そのままEnterキーを押してください.ダウンロードとインストールには,それなりの時間(サーバが混んでいるときには1時間以上)がかかります.

pacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-gdb mingw-w64-x86_64-cmake make git

vscodeをインストール&設定する場合のみ手順6につづく

5.2 clanglldbを使う場合

5.2.1 clanglldbのインストール

手順3-2で開いたmsys2のターミナルにて,以下のコマンドをコピー&ペーストして,Enterキーを押す.**ただし,ペーストするには,msys2のターミナルウインドウ上で右クリックを押し,表示されるコンテキストメニューから「Paste」をクリックします.**途中,「インストールしますか?」などの質問が表示された場合には,そのままEnterキーを押してください.ダウンロードとインストールには,それなりの時間(サーバが混んでいるときには1時間以上)がかかります.待っている間に次の手順を実行しても構いません.インストール完了時には以下のスクリーンショットと同じ表示になるはずです.

pacman -S mingw-w64-x86_64-clang mingw-w64-x86_64-lldb

5.2.2 Pythonのインストール

  1. https://www.python.org/ftp/python/3.8.6/python-3.8.6rc1-amd64.exe を例えば「ダウンロード」フォルダにダウンロードします.ダウンロードしたインストーラをダブルクリックして実行します.

  2. 以下のスクリーンショットにしたがって,インストール作業を進めます.

6. Visual Studio Codeのインストール

  1. 1-1の手順を繰り返して,「管理者: Windows PowerShell」ウインドウを開く.

  2. 以下のコマンドをコピー&ペーストし,Enterキーを押す.しばらくすると,デスクトップにVisual Studio Codeのショートカットが見えるはず.見えたら完了.参考までに完了時のPowerShellウインドウの表示は以下のスクリーンショット参照.

choco install vscode -y

7. Visual Studio Codeの設定1

  1. エクスプローラーを開き,Alt + Dを押す.Backspaceキーを押し続け,見えている文字を消す.そこに,C:\Usersと入力してEnterキーを押す.表示されたフォルダから,自分のユーザ名をフォルダを探して,ダブルクリックする.さらに「ドキュメント」あるいは「Documents」フォルダを探し,ダブルクリックする.そこに新しいフォルダ「Progs」(名前は講義によって違う可能性がある)を作成する.すでにProgsフォルダが存在する場合,既存のフォルダの名前を「Progs_old」などに変更しておく.

  2. デスクトップのVisual Studio Codeのショートカットをダブルクリックして,vscodeを起動する.

  3. Ctrl + Shift + X を入力し,japaneseとタイプする.一番上位の候補「Japanese Language Pack for〜」の右下に見える緑色のInstallボタンを押す.

  4. タイプしたjapaneseを消して,C/C++とタイプ.一番上位の候補「C/C++」の右下に見える緑色のInstallボタンを押す.

  5. (この手順は4.2 clangとlldbを使う場合を選択した場合のみ必要)タイプしたC/C++を消して,CodeLLDBとタイプ.唯一の候補「CodeLLDB」の右下に見える緑色のInstallボタンを押す.インストールには少し時間がかかる.

  6. vscodeウインドウの右下にIn order to use VS Code in Japanese, VS Code needs to restartが見えているはず.Restart Nowボタンを押す.

  7. Ctrl + K + Oを押し,手順7-1で作成したフォルダを開く.

  8. Ctrl + Nを押し,新しいファイル作成する.Untitled-1という新しいファイルが開く.Ctrl + Sを押し,新しいファイルをtest.cという名前で保存する.

  9. 以下のコードをコピーし,test.cにペーストする.Ctrl + Sを押して保存.一度vscodeを閉じる.

#include <stdio.h>

int main() {
  int a = 10;
  printf("a = %d\n", a);
}

8. Visual Studio Codeの設定2(tasks.jsonの生成)

  1. vscodeを起動.Ctrl + Sfhit + Pを押す.edit configと入力し,候補の「C/C++: 構成の編集(UI)」をクリック.

  2. 「コンパイラパス」にあるドロップダウンリストを展開し,候補の中からC:/tools/msys64/mingw64/bin/clang.exeを選択.

  3. 下に少しスクロールし,IntelliSenseモードのドロップダウンリストを展開し,候補の中からclang-x64を選択.

  4. test.cファイルのタブに移動し,Ctrl + Shift + Bを押す.画面中央上部に出てくる候補の中から,C/C++: clang.exe build active fileクリックせず,にマウスカーソルをあわせ,右側に表示される歯車アイコンをクリックする.tasks.jsonファイルが自動作成される.自動作成された内容を,以下の内容と置き換える.コンパイラとデバッガの選択で5.1と5.2のどちらを選択したかで置き換えるべきtasks.jsonの内容が変わるので注意.

「5.1 gccとgdb」を選択した場合

tasks.json
{
	"version": "2.0.0",
	"tasks": [
		{
			"type": "shell",
			"label": "C/C++: gcc.exe build active file",
			"command": "C:/tools/msys64/mingw64/bin/g++.exe",
			"args": [
				"-g",
				"-fexec-charset=CP932",
				"${file}",
				"-o",
				"${fileDirname}\\${fileBasenameNoExtension}.exe"
			],
			"options": {
				"cwd": "C:/tools/msys64/mingw64/bin"
			},
			"problemMatcher": [
				"$gcc"
			],
			"group": "build"
		}
	]
}

「5.2 clangとlldb」を選択した場合

tasks.json
{
	"version": "2.0.0",
	"tasks": [
		{
			"type": "shell",
			"label": "C/C++: clang.exe build active file",
			"command": "C:/tools/msys64/mingw64/bin/clang.exe",
			"args": [
				"-g",
				"${file}",
				"-o",
				"${fileDirname}\\${fileBasenameNoExtension}.exe"
			],
			"options": {
				"cwd": "C:/tools/msys64/mingw64/bin"
			},
			"problemMatcher": [
				"$gcc"
			],
			"group": "build"
		}
	]
}

9. Visual Studio Codeの設定3(launch.jsonの作成)

  1. test.cファイルのタブに移動し,F5キーを押すか,メニューの「実行」->「デバッグの開始」を選択.「環境の選択」候補の中のLLDBを選択.Cannot start debugging because no launch configuration has been providedエラーが出るが,気にせずOKを押す.

  2. launch.jsonファイルが開く.その中身を以下のコードと置き換える.(Ctrl + Aを押した後,Backspaceキーを押して全て削除し,コピー&ペースト)

「5.1 gccとgdb」を選択した場合

launch.json
{
    // IntelliSense を使用して利用可能な属性を学べます。
    // 既存の属性の説明をホバーして表示します。
    // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) 起動",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "c:\\tools\\msys64\\mingw64\\bin\\gdb.exe",
            "setupCommands": [
                {
                    "description": "gdb の再フォーマットを有効にする",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "C/C++: gcc.exe build active file"
        }
    ]
}

「5.2 clangとlldb」を選択した場合

launch.json
{
    // IntelliSense を使用して利用可能な属性を学べます。
    // 既存の属性の説明をホバーして表示します。
    // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "type": "lldb",
            "request": "launch",
            "name": "Debug",
            "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
            "args": [],
            "cwd": "${workspaceFolder}",
            "preLaunchTask": "C/C++: clang.exe build active file"
        }
    ]
}

10. ブレークポイントとデバッグ実行

  1. test.cファイルが表示されているタブに移動する.なお,その他のタブは閉じてしまって構いません.

  2. ソースコードの5行目をクリックした後,Shift + F9キーを押すか,行番号の左側をクリックして赤い丸を点灯させる.この作業はブレークポイントを設定しています.ブレークポイントとは,プログラムの実行を一時停止する場所のことです.デバッガを用いた実行では,ブレークポイントのついた行を実行する直前で,プログラムの実行が止まります.このとき,ローカル変数などの値を確認することができます.

  3. F5キーを押すか,メニューの「実行」->「デバッグの開始」を選択.5行目でプログラムの実行が一時停止したらOKです.

  4. Shift + F5キーを押すか,メニューの「実行」->「デバッグの停止」を選択して終了.

以上.

8
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
10