0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Windwos11: MinGW64 + VSCode でC言語デバッグ環境を構築する最小手順

Posted at

背景

子供が大学の実習のためのC言語開発環境の構築に苦労していました。Windows11 の PC で、 MinGW とVSCode を使うことが推奨されているようなのですが、うまく構築できず、チューターの大学院生に聞いても解決しなかったとのことです。私もネット検索しながら手伝ったのですが、ぴったりの情報が意外と見つからず苦労したので、覚書として書いておくことにしました。

ポイント

古い環境の MinGW ではなくて新しい MinGW64 を使います。MinGW64 のインストールはアーカイブを展開して適切なフォルダーに置いて、パスを設定すればOKです。コンパイルに必要な gcc などとデバッグに必要な gdb は MinGW64 のアーカイブに含まれています。
ネット検索で出てくる情報では、VSCodeで "launch.json" を作成すると書かれているものが多いですが、これは必須ではありません。 "tasks.json" を作成すると書かれている情報もありますが、これはVSCodeでプロジェクトフォルダーを開くと自動で生成されます。また、プロジェクトフォルダーを開かず "tasks.json" が無い状態でも一応デバッグ可能です。
今回うまく構築できていなかった環境は古い MinGW を(不完全に)インストールしていて、コンパイルと実行はできるがデバッグはできないという状況でした。"launch.json" や "tasks.json" をいくら作ってもデバッグできないわけです。

手順

拡張子を表示

Windows11の初期状態では、エクスプローラーでファイルの拡張子が隠蔽されているので、表示->表示->ファイル名拡張子 を選択して表示されるようにします。
(これは皆さんやっていますよね)
image.png

MinGW64をインストール

ダウンロード

https://github.com/niXman/mingw-builds-binaries/releases からアーカイブをダウンロードします。多数のファイルがありますが、ファイル名に "win32-seh-msvcrt" または "win32-seh-ucrt" が入ったものをダウンロードしましょう。今回、下表の2つのファイルについて動作を確認してみたのですが、デバッグ時の動作に一部違いがありました。

ファイル名 デバッグ動作
x86_64-14.2.0-release-win32-seh-msvcrt-rt_v12-rev0.7z stdio.hまでステップインできる
x86_64-14.2.0-release-win32-seh-ucrt-rt_v12-rev0.7z stdio.hにステップインできない

展開と移動

ダウンロードできたら、エクスプローラーの右クリックメニューで「すべて展開」を選んで展開します。
そこで展開された "mingw64" というフォルダーを丸ごと移動(またはコピー)するのですが、Cドライブ直下に "tools" という名前のフォルダーを作って、その配下に移動するのがお勧めです。今後、各種のツールをインストールする場合も、"tools" 配下のフォルダーに入れるようにすると、Cドライブ直下がすっきりします。名前は "tools"でなくてもかまいませんが、空白文字や日本語文字を含まない名前にしておきましょう。

image.png

環境変数の設定

エクスプローラーで "MinGW64" 配下の "bin" フォルダーを開いた状態でツールバーをクリックすると、このフォルダーのフルパスが出てくるので、Ctrl+C または右クリックメニューの「コピー」でコピーしておきます。
image.png

スタートメニューで "en" または "env" とタイプして「環境変数を編集」を選びます。
image.png

ここで "envi" までタイプしてしまうとなぜか「システム環境変数の編集」が出てきてしまうのですが、これを選んでしまうと、次の画面で「環境変数」ボタンを押さなくてはならず、もうひと手間かかってしまいます。
image.png

「環境変数の編集画面で、ユーザー環境変数の "Path" を選択して「編集」ボタンを押し、
image.png

「新規」ボタンを押します。
image.png

そこで Ctrl+V を押すと、先ほどエクスプローラーのアドレスバーでコピーしたパスが貼り付けられます。さらに下の「OK」ボタンを押してこの画面を閉じて、
image.png

さらに、前の「環境変数」画面の「OK」ボタンを押して、環境変数の設定を完了します。
image.png

このようにPathを適切に設定しておけば、VSCode側でMinGW64のツールを見つけてくれます。

VSCode をインストール

https://code.visualstudio.com/download から Windowsの x64用のインストーラーをダウンロードしてインストールします。インストール先はデフォルト設定でいいでしょう。
image.png

「追加タスクの選択」で

  • エクスプローラーのファイルコンテキストメニューに[Codeで開く]アクションを追加する
  • エクスプローラーのディレクトリコンテキストメニューに[Codeで開く]アクションを追加する

を追加しておきます。
image.png

使い方

プロジェクトフォルダーを用意

プロジェクトフォルダーを用意します。すでにソースコードがある場合はここに置きます。
このプロジェクトフォルダーに対して、エクスプローラーのメニューから「Codeで開く」を実行します。
image.png

現在のウィンドウ内のファイルの作成者を信頼するか聞いてくるので、Yesを押します。
image.png

ソースコードをこれから作る場合は EXPLORER ペインの右クリックメニューで "New File..."を選び、
image.png

ソースコードのファイル名をつけます。
プロジェクトフォルダーにすでにソースコードがある場合は、EXPLORER ペインに表示されているファイル名をクリックして開きます。

VSCodeがまっさらの状態だと、 "C/C++ Extension Pack" をインストールするか聞いてくるので "Install"を押します。
image.png

しばらく待つとインストールが完了します。
このタブは閉じてしまってOKです。
image.png

先ほど新規作成したソースコードのタブに、例えば次のようなソースコードを書いてみます。

test01.c
#include <stdio.h>

void main(void){
    for(int i=0; i < 8; i++){
        printf("%d\n", i);
    }
}

左側の、右向き三角と虫のアイコンをクリックして、"Run and Debug" ボタンを押します。
image.png

"C++ (GDB/LLDB)" を選びます。
image.png

"Run and Debug" ボタンを再び押します。
"C/C++:gcc.exe build and debug active file" を選びます。
image.png

CMake に関するダイアログが右下に出ますが、とりあえず無視しておいてOKです。
image.png

デバッガーが動作し、 DEBUG CONSOLE が流れていきます。
image.png

ソースコードの行番号の左側にマウスカーソルを合わせると "Click to add a breakpoint" と出るので、そのままクリックするとブレークポイントを設定することができます。
image.png

ブレークポイントを1つ以上設定して "Run and Debug" を押すと、最初に到達したブレークポイントで停止します。
"VARIABLES" で現在の変数の値を確認することができます。
image.png

デバッグツールバーの各ボタンを押すことで、続行、ステップオーバー、ステップイン、ステップアウト、リスタート、ストップの各操作をすることができます。
image.png

ここまでの操作で、プロジェクトフォルダーの配下に ".vscode" というフォルダーが生成されて、その配下に "tasks.json" というファイルが生成されています。
image.png

ここに必要な設定が記録されているので、次回以降はプロジェクトフォルダーを「Codeで開く」すれば、
image.png

"Run and Debug" ですぐにデバッグできます。
なお、標準出力・入力は TERMINAL タブで出力・入力されますので、他のタブに切り替わっている場合は再度切り替えて確認しましょう。
image.png

ところで、VSCodeでプロジェクトフォルダーを開かず ".vscode" フォルダーが作られなかった場合、 "tasks.json" ファイルも作られませんが、デバッグは可能です。ただし、"tasks.json" ファイルの情報がないため、"C++ (GDB/LLDB)" を選ぶ操作と "C/C++:gcc.exe build and debug active file" を選ぶ操作が毎回必要になります。

注意事項

MinGW Installer は使わない

sourceforge や softnic から MinGW Installer (mingw-get-setup.exe) がダウンロードできますが、古い環境であること、デフォルト選択肢が設定されていないことから、正しくインストールすることが困難です。これは使わないで、MinGW64を使うようにしましょう。
MinGW_Installer_非推奨.png

Code Runner は不要

VSCode上でCなどのプログラムを実行するためのプラグインで "Code Runner" というのがありますが、上記の "Run and Debug" で実行できるので不要でしょう。"Code Runner" ではデバッグができないので、少し複雑なプログラムを書いて意図通り動かないとバグ探しに苦労することになります。早めにデバッグに慣れておいたほうがいいでしょう。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?