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?

Visual Studio Code×Raspberrry PiでC言語Lチカをデバッグする(2026年版)

0
Posted at

1. はじめに

 Visula Studio Code(以下、VS Code)はMicrosoft社が提供する軽量な無料コードエディタです。無料でありながら、豊富な拡張機能や直感的なデバッグ機能を備えており、初心者からプロフェッショナルまで幅広いユーザーに支持されています。本稿では、Raspberry Pi 5/4Bを対象にVS Codeのインストール方法とデバッグ機能を使った L チカ(LEDの点滅)のステップ実行手順を紹介します。

表. 使用したもの

品 名 内 容
ラズベリーパイ Raspberry Pi 5 4GB、Raspberry Pi 4B 4GB
OS Trixie(64bit) Desktop released:2025-12-04
VS Code ver.1.110
GPIOライブラリ lgpio
電子部品 LED、抵抗390Ω、ブレッドボード、ジャンパーワイヤ、etc

2.VS Codeのインストール方法

● インストールとバージョンの確認方法
 ターミナルを開き、パッケージリストを更新してからVS Codeをインストールし、最後に再起動します[1]。

sudo apt update 

※アップグレードできるパッケージがあれば、確認してupgradeします。

sudo apt upgrade
sudo apt install code  
reboot

VS Codeのバージョンは次のコマンドで確認することができます。

code --version

● VS Codeの基本レイアウト
 ラズベリーアイコンの「アプリケーション・メニュー」から「プログラミング」→「Visual Studio Code」をクリックしてVS Codeを起動します。VS Codeのレイアウトは、機能別にいつかの主要エリアで構成されています。おもな名称の概要を表にまとめて、名称の番号を図に追記します。

表. VS Code のレイアウト要素一覧

# 名 称 概 要
メニューバー VS Code のすべての機能にアクセスできる最も基本的な UI。
コマンドセンター コマンド検索・ファイル検索・設定検索などを行う。
アクティビティバー エクスプローラー、検索、Git、デバッグ、拡張機能などの「ビュー切り替え」を行う。
プライマリサイドバー ファイル一覧、検索結果、Git の変更一覧、デバッグビュー(変数・コールスタック)などを表示。
エディタ ファイルを編集するためのメインエリア。
パネル ターミナル、デバッグコンソール、出力、問題(エラー)などを表示。
セカンダリサイドバー デフォルトではチャットビューを表示。
ステータスバー 現在の言語モード、行番号、Git ブランチ、警告・エラー数などを表示。

VS Codeデスクトップ画面 Canva1.png

● 日本語パッケージのインストール
 VS Codeの初期状態では英語表記のため、日本語パッケージをインストールします。
• VS Code画面の左側のアクティビティバーにある四角いアイコン(Extensions)をクリック。
• 検索欄に「japanese language pack」と入力。
• 表示されたJapanese Language Packの「Install」をクリック。
インストール完了後、VS Code を再起動し、日本語表記に切り替わっていることを確認。
Japanese Language Pack A.png

● 日本語入力の有効化
 アップデートにより解決されているかもしれませんが、VS Code で日本語が入力できない場合は、第 5 世代の日本語入力フレームワークとエンジンをインストールします。ターミナルを開き、パッケージリストを更新したうえで fcitx5 と mozc をインストールし、最後に再起動します。これにより、Chromium や Thonny など他のアプリケーションでも日本語入力が可能になります。

sudo apt install fcitx5 fcitx5-mozc fcitx5-configtool -y
reboot

● C/C++拡張機能のインストール
 Raspberry Pi で使用する gcc(コンパイラ) と gdb(デバッガー) を VS Code 上で扱いやすくするために、Microsoft の C/C++ 拡張機能をインストールします。この拡張機能は、コード補完やデバッグ画面など、C 言語開発に必要な機能を提供します。
 なお、VS Code には「C/C++」と「C/C++ Extension Pack」という似た名前の拡張機能があります。「C/C++」は C 言語開発に必要な補完やデバッグ機能を提供する“本体”の拡張機能です。
一方、「C/C++ Extension Pack」は、この C/C++ 本体に CMake Tools などを加えた“便利なセット”です。L チカのようなシンプルな C プログラムでは「C/C++」だけをインストールすれば十分です。
• 画面左側のアクティビティバーにある四角いアイコン(Extensions)をクリック。
• 検索欄に「c/c++」と入力。
• 「インストール」をクリックしてインストールを開始。
c-c++ extensions A.png

3.lgpioライブラリのインストール

 Raspberry Pi 用 GPIO ライブラリ lgpio は、Joan 氏によって無料で公開されている軽量で扱いやすいライブラリです[2]。インストール方法や依存パッケージについては、Joan 氏の GitHub リポジトリにある README に記載されています。README の手順に従ってダウンロードとインストールを行います。
https://github.com/joan2937/lg

wget https://github.com/joan2937/lg/archive/master.zip
unzip master.zip
cd lg-master
make
sudo make install

 lgpioライブラリの仕様や使用方法については公式サイト参照してください。
https://abyz.me.uk/lg/lgpio.html

4.プロジェクトの作成

 Lチカのソースコードを保存するためのフォルダ (任意の名前)を作成します。
VS Code は「フォルダ=プロジェクト」という考え方で動作します。そのため、まずフォルダを作り、その中にソースコードや設定ファイルをまとめておくと、ビルドやデバッグがスムーズに行えます。
・VS Codeのメニューバーから「ファイル」→「フォルダーを開く」を選択。
・表示されたダイアログ右上の「フォルダーを作成します」アイコンをクリック。
・フォルダ名(例:MyApp2)を入力し、「作成」ボタンをクリック。
・ダイアログ右下の「選択」ボタンをクリック。
 これで、VS Codeは、そのフォルダをプロジェクトとして扱うようになります。ビルド設定ファイル(tasks.json)やデバック設定ファイル(launch.json)を作成すると、設定ファイルを保存するために.vscode(プロジェクト設定フォルダ) が自動的に生成されます。これから作成するtasks.jsonとlaunch.jsonは、この.vscode フォルダに保存されます。
 ここでは学習目的として、1つのフォルダに複数のソースコードを置くシンプルな構成を採用しています。共通の設定ファイルを使うことで、フォルダ内のどのソースコードでも同じビルド設定・デバッグ設定で実行できるようになります。

 /home/MyApp2(プロジェクトフォルダ)
       ├── blink.c
       ├── その他のCソースコード
       ├── .vscode(設定フォルダ)
              ├── tasks.json  (ビルド設定ファイル)
              ├── launch.json (デバック設定ファイル)

●ビルド設定ファイル(tasks.json)の作成
 ビルド設定ファイルを作成します。
・メニューバーの 「ターミナル」→「タスクの構成...」 をクリックします。
・表示された「構成するタスクを選択」から「テンプレートからtasks.jsonを生成」をクリックし、表示された一覧から「Others 任意の外部コマンドを実行する例」をクリックします。
 これで .vscodeフォルダとtasks.json が自動的に作成されます。表示された雛形を、次の内容に書き換えて保存します。このtasks.jsonには、2つのタスクが定義されています。

表. ビルドタスク一覧

名 称 概 要
Build Executable with lgpio 実行ファイルを生成するビルドタスク
Compile Only with lgpio コンパイルのみを行うタスク

 後述するVS Codeの「タスクの実行」では、tasks.jsonのlabelに設定した名前(Build Executable with lgpio/Compile Only with lgpio)がそのまま表示されるため、目的に応じて選択して実行できます。

tasks.json
{
    "version": "2.0.0",
    "tasks": [
        {
            // 実行ファイルをビルドするタスク
            "label": "Build Executable with lgpio",
            "type": "shell",
            "command": "gcc",
            "args": [
                "-Wall",        // すべての警告を有効
                "-g",           // デバッグ情報を付加
                "-O0",          // 最適化を無効化
                "${file}",      // 開いているCファイルのパス
                "-llgpio",      // lgpioをリンク
                "-lpthread",    // pthreadをリンク
                "-lm",          // 数学ライブラリをリンク
                "-o",           // Cファイルと同名の実行ファイルを出力
                "${fileDirname}/${fileBasenameNoExtension}"
            ],
            "group": {  // ビルドタスクのデフォルトに登録
                "kind": "build",
                "isDefault": true
            }
        },
        {
            // コンパイルのみを行うタスク
            "label": "Compile Only with lgpio",
            "type": "shell",
            "command": "gcc",
            "args": [
                "-Wall",
                "-c",
                "${file}",
                "-g",
                "-O0"
            ],
            "group": {  // ビルドタスクのグループだがデフォルトではない
                "kind": "build",
                "isDefault": false
            }
        }
    ]
}

●デバッグ設定ファイル(launch.json)の作成
 デバッグ設定ファイルを作成します。
・画面左側のアクティビティバーにある「実行とデバッグ」アイコン(再生ボタンに虫のマーク)をクリックします。
・「実行とデバッグ」ボタンの下にある、「launch.json ファイルを作成します」 という青いリンクをクリックします。
 これで、.vscode フォルダ内に launch.json が自動的に作成されます。表示された雛形を、次の内容に書き換えて保存します。
 特に「"stopAtEntry": true」を設定しておくと、デバッグ開始時にプログラムが main の先頭で停止するため、初心者でもステップ実行を扱いやすくなります。
launchjson A.png

launch.json
{
    "version": "0.2.0",
    "configurations": [
        {   // gdb を使って C プログラムをデバッグする設定
            "name": "Run C Program with lgpio",
            "type": "cppdbg",
            "request": "launch",
            // 実行ファイルのパス
            "program": "${fileDirname}/${fileBasenameNoExtension}",
            // 作業ディレクトリ(プロジェクトフォルダ)
            "cwd": "${workspaceFolder}",
            // デバッグ開始時に main の先頭で停止
            "stopAtEntry": true, 
            // gdb を使用
            "MIMode": "gdb",
            // gdb の表示を見やすくする設定
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

5.Lチカのソースコードの作成

 Lチカのソースコードを作成します。VS Codeのメニューバーから「ファイル」→「新しいテキストファイル」を選択します。新規ファイル名は「Untitled」として開くため、まず「名前を付けて保存」をクリックし、プロジェクトフォルダに「blink.c」という名前で保存します。続いて、Lチカ用のソースコードを入力します。LED点灯回路の回路図は、次の図のとおりです[3]。

blink.c
#include <stdio.h>      // fprintf
#include <stdlib.h>     // EXIT_SUCCESS, EXIT_FAILURE
#include <lgpio.h>      // lgGpiochipOpen, lgGpioClaimOutput, LG_LOW, etc

#define PI5     4       // Raspberry Pi5 /dev/gpiochip4
#define PI4B    0       // Raspberry Pi4B /dev/gpiochip0
#define LED0    23      // GPIO23にLEDを接続
#define BLINK_INTERVAL 0.5     // 点灯/消灯の間隔(秒)

int main(void) {
    int hnd;
    int lFlgOut = 0;
    hnd = lgGpiochipOpen(PI5);      // GPIO チップオープン (PI5の場合)
    // hnd = lgGpiochipOpen(PI4B);   // PI4Bの場合はこちらを使用
    if (hnd < 0) {
        fprintf(stderr, "lgGpiochipOpen failed\n");
        return EXIT_FAILURE;
    }
    // GPIO23を出力に設定(初期状態: LOW)
    if (lgGpioClaimOutput(hnd, lFlgOut, LED0, LG_LOW) < 0) {
        fprintf(stderr, "lgpioClaimOutput failed\n");
        lgGpiochipClose(hnd);
        return EXIT_FAILURE;
    }
   
    // Lチカ(LEDの点灯/消灯を10回繰り返す)
    for (int i = 0; i < 10; i++) {
        lgGpioWrite(hnd, LED0, LG_HIGH);    // LED点灯
        lguSleep(BLINK_INTERVAL);
        
        lgGpioWrite(hnd, LED0, LG_LOW);     // LED消灯
        lguSleep(BLINK_INTERVAL);
    }

    lgGpiochipClose(hnd);
    return EXIT_SUCCESS;
}

6.ビルドと実行

●ビルドの方法
 VS Codeのメニューバーから「ターミナル」→「タスクの実行」を選択します。表示された一覧から「Build Executable with lgpio」をクリックすると、ビルドが開始されます。この名前は、tasks.jsonのlabelで定義したものです。なお、ソースコードに誤りがある場合は、ターミナルにエラーメッセージが表示されます。
Build Executable with lgpio A.png

●実行の方法
 ビルドが完了したら、メニューバーから「ターミナル」→「新しいターミナル」を開きます。ターミナルが表示されたら、「./blink」と入力してプログラムを実行します。LEDが10回点滅し、正常に終了します。
blink実行.png

7.デバッグの実行方法

●デバッグの開始
 デバッグを実行します。
・画面左側のアクティビティバーにある「実行とデバッグ」アイコン(再生ボタンに虫のマーク)をクリックします。
・画面上部に、launch.jsonで設定した「Run C Program with lgpio」が表示されるので、その実行ボタン(再生マーク)をクリックします。
・デバッグを開始すると、プログラムはmain関数の直後(12行目)で停止し、その行がハイライト表示されます。
・同時に、プライマリーサイドバーには変数の値が表示され、画面上部にはデバッグツールバーが表示されます。
デバッグの実行 Canva1.png

mainエントリー.png

変数.png

●デバッグツールバーの概要
 デバッグツールバーには、デバッグ作業で使用する6つのボタンがあり、概要は次のとおりです。
デバッグアイコン1 Canva.png

表. デバッグボタンの一覧

# ボタン名 ショートカット 動作
続行 F5 次のブレークポイントまで実行を進める
ステップオーバー F10 現在の行を実行し、次の行で停止する
ステップイン F11 関数の中に入って処理を追いかける ※
ステップアウト Shift+F11 今いる関数の処理を最後まで実行し、呼び出し元に戻る
再起動 Ctrl+Shift+F5 デバッグを最初からやり直す
停止 Shift+F5 デバッグを終了する

※ ステップインはソースコードがある関数のみ対象です。

●ブレークポイントの設定
 ブレークポイントとは プログラムの実行を一時停止させるための停止位置を示す印です。ブレークポイントを置いた行に到達すると、プログラムはそこで止まります。プログラムは通常、高速に実行されるため「どの時点で何が起きているか」を目で追うことはできませんが、ブレークポイントを使うことで、変数の値の変化どの行が実行されているかを確認することができるため、バグの原因を特定しやすくなります。
 LEDの点滅を制御しているfor文にブレークポイントを置いてみましょう。for文の行番号の左側をクリックすると赤丸(ブレークポイント)が付きます。もう一度クリックすると、ブレークポイントを削除できます。
ブレークポイント Canva.png

 ここで、デバッグツールバーの「①続行」アイコンをクリックすると、main関数の先頭からプログラムの実行が再開され、設定したブレークポイントのあるfor文の行で停止します。
forでブレーク.png

 次に、デバッグツールバーの「②ステップオーバー」を2回クリックすると、「lgGpioWrite(hnd,LED0,LG_HIGH);」が実行され、LEDが点灯します。さらに、ステップオーバーを続けてクリックすると、LEDが消灯します。for文の内部を1行ずつステップ実行しているため、プライマリーサイドバーに表示されている変数「i」の値も1ずつインクリメントされていきます。
 ここで、「①続行」をクリックすると、残りのループ回数分だけLEDが点滅し、プログラムは正常に終了します。デバッグ作業も終了し、ターミナルにプロンプトが表示されます。

ステップオーバー1.png

8.おわり

 本記事では、Raspberry Pi 上で VS Code を使い、C 言語による L チカをビルド・実行・デバッグする手順を紹介しました。プロジェクトフォルダの準備から tasks.json・launch.json の設定、LED 点滅プログラムの作成、そしてステップ実行によるデバッグまでを通して、VS Code を使った開発の基本的な流れを確認できたと思います。
 デバッグ機能を使って処理の流れや変数の変化を追えることは、システム開発にとても役立ちます。今回の L チカはシンプルな例ですが、複数の関数を使ったプログラムでステップインやステップオーバーのデバッグ機能も試してみてください。
 この記事が、Raspberry Pi と VS Code を使った C 言語の学習や開発の一助になれば幸いです。

参考文献

[1] Visual Studio Code on Raspberry Pi, https://code.visualstudio.com/docs/setup/raspberry-pi
[2] lgpio C API, https://abyz.me.uk/lg/lgpio.html
[3] 菊池達也,"【改訂新版】C言語ではじめるRaspberry Pi徹底入門,"技術評論社,pp.97-101(2025 Jan.) https://gihyo.jp/book/2025/978-4-297-14647-4

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?