C-Lang#WSL2+VS Code_Part2_Windows 11でCプログラムをデバッグ!

こちらの記事シリーズはCプログラムの勉強やVS CODEなどの環境構築になります。今回は以下の項目を完成させます。

  • C/C++Pluginインストール
  • VS CodeからWSLのCプログラムをDebugする
  • BreakPointを作成する
  • 変数を監視する

さ、FAを楽しもう!

Reference Link

C-Lang#WSL2+VS Code_Part1_Windows 11でC言語開発環境を構築
こちらの記事シリーズはCプログラムの勉強やVS CODEなどの環境構築になります。最初に以下の項目を完成させます。 Windowsに...

前書き

いつも私の技術ブログとYouTubeチャンネルをご覧いただき、心より感謝申し上げます。また、いまFullさん(full@桜 八重 (@fulhause) / X)と共に毎週水曜日の夜にお届けしている「高橋クリス」ラジオ番組を運営しています。

技術は独り占めせず、届けるもの

私たちは工場の生産技術や制御に関する技術情報を、ブログや動画などで無料公開しています。「知識は誰でもアクセスできるべき」という信念のもと、現場で役立つ具体的なノウハウやトラブル事例などを発信してきました。すべて無料で続けているのは、「知らなかったせいで困る人」を少しでも減らしたいからです。

また、もしあなたの現場で…

  • 「このPLCとデバイスの組み合わせ、ちゃんと動くのかな?」
  • 「EtherCAT通信でうまくいかない部分を検証してほしい」
  • 「新しいリモートI/Oを試したいけど社内に検証環境がない」

など、困っている構成や試してみたいアイデアがあれば、ぜひお知らせください。機器の貸出や構成の共有が可能であれば、検証し、記事や動画で発信します(ご希望に応じて匿名対応も可能です)。

支援のかたち

現在、私達の活動はほぼ無償で続けており、記事や動画の制作には、時間と検証環境の整備が必要です。この活動を継続的にコンテンツを提供するためには、皆様の温かいご支援が大変重要です。

メンバーシップ(ラジオの応援)

Fullさんとのラジオをより充実させるための支援プランです。

https://note.com/fulhause/membership/join

Amazonギフトリスト

コンテンツ制作に必要な機材・書籍をリストにしています。

https://www.amazon.co.jp/hz/wishlist/ls/H7W3RRD7C5QG?ref_=wl_share

Patreon(ブログ・動画活動への応援)

月額での小さなご支援が、記事の執筆・検証環境の充実につながります。

https://www.patreon.com/user?u=84249391

Paypal

小さな支援が大きな力になります。

https://paypal.me/soup01threes?country.x=JP&locale.x=ja_JP

知ってたら助かること、届けたいだけです

あなたの応援が、知識の共有をもっと自由で持続可能なものにしてくれます。これからもどうぞよろしくお願いします。

soup01threes*gmail.com

https://x.com/3threes2

技術はひとりじゃもったいない。

Implementation

STEP1:C/C++ Pluginインストール

VS CODEからC/C++をDebugしたいので、ExtensionからC/C++ Pluginをインストールします。

STEP2:Folder開く

次は今回記事の作業フォルダを開くために、File-→Open Folderを開きます。

今回記事の作業フォルダ/home/threespc07/ws/zlib_hello/を開きます。

Done!

STEP3: .vscode Folder作成

その中に.vscodeフォルダを作成します。

VS Code の .vscode フォルダは、そのプロジェクト(フォルダ)専用の設定や構成ファイルをまとめて保存する場所です。簡単に言うと「このフォルダを開いたときだけ有効になる VS Code の設定箱」です。

STEP4:launch.json作成

.vscodeフォルダにlaunch.jsonを作成します。

これは VS Code の「デバッグのやり方」を定義する設定ファイル です。

.vscode/launch.json に保存され、F5 キーや「Run and Debug」実行時にどのようにプログラムを動かすかを決めます。

{
  “version”: “0.2.0”,
  “configurations”: [
    {
      “name”: “WSL gdb launch”,
      “type”: “cppdbg”,
      “request”: “launch”,
      “program”: “${workspaceFolder}/app”,
      “cwd”: “${workspaceFolder}”,
      “stopAtEntry”: false,
      “MIMode”: “gdb”,
      “miDebuggerPath”: “/usr/bin/gdb”,
      “preLaunchTask”: “build-app”,
      “setupCommands”: [
        { “text”: “-enable-pretty-printing”, “ignoreFailures”: true }
      ]
    }
  ]
}

version: 0.2.0

→ launch.json のフォーマットバージョン。

name: “WSL gdb launch”

→ デバッグ構成の名前(UI上で選択時に表示)。

type: “cppdbg”

→ VS Code の C/C++ 拡張(cpptools)を使うデバッグモード。

request: “launch”

→ プログラムを新規に起動してデバッグ。(“attach”なら既存プロセスに接続)

program: “${workspaceFolder}/app”

→ 実行するバイナリのパス。workspaceFolder は開いているプロジェクトのルート。

cwd: “${workspaceFolder}”

→ 実行時のカレントディレクトリ。

stopAtEntry: false

→ trueならmain()の先頭で必ず停止。

MIMode: “gdb”

→ GDBを使ってデバッグ。

miDebuggerPath: “/usr/bin/gdb”

→ WSL(Ubuntu)側のgdb実行ファイルパス。

preLaunchTask: “build-app”

→ デバッグ前にtasks.jsonのlabel: “build-app”タスクを実行(自動ビルド)。

setupCommands: -enable-pretty-printing

→ 構造体やSTLの変数を見やすく整形表示する設定。

STEP5:tasks.json作成

.vscodeフォルダtasks.jsonを作成します。

これは VS Code の「タスク機能」を使ってコマンドを自動実行する設定ファイル で、.vscode/tasks.json に置かれます。

ビルド・テスト・コード生成・リンター実行 などをワンキー(例:Ctrl+Shift+B)で実行できるようにします。そしてよく使うコマンド(例:gcc main.c -o app)を定義して、毎回ターミナルに打たなくてもワンクリックで実行できるようにします。

launch.json の preLaunchTask と連携して、デバッグ前に自動ビルドさせることも可能。

{
  “version”: “2.0.0”,
  “tasks”: [
    {
      “label”: “build-app”,
      “type”: “shell”,
      “command”: “/usr/bin/gcc”,
      “args”: [
        “-O0”, “-g3”, “-ggdb3”,
        “${workspaceFolder}/main.c”,
        “-o”, “${workspaceFolder}/app”,
        “-lz”
      ],
      “group”: { “kind”: “build”, “isDefault”: true },
      “problemMatcher”: [“$gcc”]
    }
  ]
}

version: “2.0.0”

→ tasks.json 設定ファイルのフォーマットバージョン。

label: “build-app”

→ タスク名。launch.json の “preLaunchTask”: “build-app” から参照される。

type: “shell”

→ シェルを介してコマンドを実行(パイプやリダイレクトが使える)。

command: “/usr/bin/gcc”

→ 実行するコンパイラコマンド(WSLのgcc)。

args

-O0

最適化なし(デバッグ用)

-g3

最大レベルのデバッグ情報生成

-ggdb3

GDB向けの詳細なデバッグ情報生成

${workspaceFolder}/main.c

コンパイル対象のソース

-o ${workspaceFolder}/app

出力バイナリ名

-lz

zlibライブラリをリンク

group: { kind: “build”, isDefault: true }

このタスクをビルドタスクとして登録し、Ctrl+Shift+B のデフォルトに設定。

problemMatcher: [“$gcc”]

gcc のエラー/警告を VS Code の「問題」タブに表示可能にする。

STEP6:BreakPointを有効する

CプログラムにBreakPointを追加します。Break Pointに設定したいプログラムLineをクリックすれば赤点が追加され、それはBreakPointです。

Breakpoint(ブレークポイント) は、プログラムをデバッグ実行している最中に、そこで一時停止させるための「停止ポイント」 のことです。それはバグの原因調査や、処理の流れを確認するときに必須です。

プログラムを一行ずつ読むために、途中で止める場所を指定するマーカー。そのとき止まったタイミングで、

  • 変数の値
  • メモリ内容
  • 関数の呼び出し履歴(コールスタック)

などを確認できます。

Done!

STEP7:Run and Debug実行

次はVS CodeのRun and DebugをTab開きます。

RUN AND DEBUGのところに ”WSL gdb Launch”が表示されます。

VS Codeの右側にあるDebug C/C++をクリックします。

Drop-Down Listが表示されます。

WSL.gdb lauch を設定します。

Done!プログラムが実行され、BreakPointに着くとプログラムが一時的停止になります。

STEP8:変数モニターなど

Run and Debug TabにVARIABLES TABからヘンスの現在値を確認できます。

そしてVS CodeにはTool barがあり、プログラムを進むなどの操作が可能です。

例えばF5をクリックすると、プログラムが前に進みます。

F11をクリックすると、プログラムが1列だけ進みます。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする