2018年10月26日金曜日

Visual Studio Code でC言語をステップ実行

こんにちは、ふじかーです。

C言語をテキストエディタで書いているような 組み込み開発現場 では

(´-`)。oO( このロジックが意図通り動作するか、ちょいと手元で確認したい。。 )

みたいな時、少し困ります。

テキストエディタではそんな事できないし
VisualStudioの無償版は昔に比べて準備も大変だし、使うのも重いし不便。
業務のクロスコンパイル環境を立ち上げるのは、もっと大袈裟で面倒くさい。

ということで「軽量なツールで、C言語をお手軽にステップ実行できる環境」 を作成します。

以前、もりもり君が「なかなか使いやすいっスよ」とお勧めしてくれた
Visual Studio Code(以下、VS Code)を使います。

<手順>



コンパイラ(gcc)をインストール

  • ダウンロード・インストール
下記のサイトにアクセスし、一式おとしてインストールします。
http://www.mingw.org/download/installer
 → mingw-get-setup.exe のダウンロードが始まる
 → 実行して Install → Continue で進める
 → 「MinGW Installation Manager」が起動

  • gcc設定
C言語作業に必要なパッケージをインストールします。
 ・「mingw32-base」   を右クリックして「Mark for Installation」を選択し、チェックを入れる
 ・「mingw32-gcc-g++」を右クリックして「Mark for Installation」を選択し、チェックを入れる
 ・[Installation]→[Apply Changes]]→[Apply]→ セットアップが終われば [Close]


  • パスを通す
システムのプロパティから、環境変数のPathにgccのパスを追加します。
手順が分からない場合、下記参照。
 ・Windowsキー+R → [ファイル名を指定して実行] 画面が開く
 ・「sysdm.cpl」 と入力してEnter → [システムのプロパティ]画面が開く
 ・[詳細設定]タブ → 環境変数(N) → システム環境変数(S) エリアの 「Path」 を選択 → 編集(I)... をクリック
 ・[システム変数の編集] ダイアログの [変数値(V)] の末尾に 「;C:\MinGW\bin」 を追記して [OK]



VS Code 本体をインストール

  • ダウンロード・インストール
下記のサイトにアクセスして、本体をダウンロード・インストールする。
 https://code.visualstudio.com/Download


 → 64bit環境なら、[User Installer 64 bit] をクリック
 → VSCodeUserSetup-x64-X.XX.X.exe のダウンロードが始まる
   (記載時点ではVSCodeUserSetup-x64-1.28.2.exe)
 → 同意して、次へ次へ~でインストール完了。



  • 日本語化 
VS Code はバージョン1.25以降「デフォルト英語版のみ」になったため、
日本語化する必要があります。
 ・画面左の 拡張機能(Extensions)ボタン を押して「Japanese Language Pack」で検索 → Install → VS Codeを再起動



  • C/C++
C/C++開発用の拡張機能もインストールしておきます。
 ・こちらも拡張機能から「C/C++」で検索 → Install → VS Codeを再起動




作業場所、test.cの準備

  • test.c ファイル準備
VS Code からでも お手持ちのエディタでも良いですが、適当にHelloWorldソースを用意します。
#include <stdio.h>

int main(int argc, char *args[])
{
    printf("Hello, world!\n");
    return 0;
}
これを作業フォルダに保存しておきます(ここでは D:\test\test.c )。
またこの作業フォルダを、VS Code のメニューから開いておきましょう。
・メニュー → フォルダーを開く → D:\test



デバッグの為の設定

  • ビルドタスクの設定(tasks.json)
 修正したソースコードをビルドするための設定を行います。
 ・フォルダーを開いている状態で Ctrl+Shift+B
 ・「実行するビルドタスクがありません。ビルドタスクを構成する」というメッセージが出るのでクリック
 ・「テンプレートからtask.jsonを作成する」というメッセージが出るのでクリック
 ・表示された候補の中から「Others 任意の外部コマンドを実行する例」を選択
  → 作業フォルダ内に「.vscode/tasks.json」ファイルが自動生成され、画面に表示される


 ・表示された task.json の
"command": "echo Hello"
  を削除して、下記を挿入
"command": "gcc -g -O0 -o a.exe test.c",
"problemMatcher": "$tsc", 
"group": {
    "kind": "build",
    "isDefault": true
}
 ・Ctrl+S で保存しておく


  • デバッグ環境の設定(launch.json)
 デバッグに必要な設定を行います。
 ・画面左のデバッグアイコンを押下
 ・デバッグの開始アイコン(再生マーク)を押下
 ・表示された候補の中から「C++(GDB/LLDB)」を選択
  → 作業フォルダ内に「.vscode/launch.json」ファイルが自動生成され、画面に表示される


 ・表示された launch.json の
"program": "enter program name, for example ${workspaceFolder}/a.exe",
"miDebuggerPath": "/path/to/gdb",
  を削除して、下記を挿入
"program": "${workspaceRoot}/a.exe",
"miDebuggerPath": "c:\\mingw\\bin\\gdb.exe",
 ・Ctrl+S で保存しておく



デバッグ開始!


 ・試したいコードをmain関数に記載し、リビルドは Ctrl+Shift+B
 ・ブレークポイントをセットしてF5でデバッグ開始、F10でステップ実行


[デバッグの為の設定] を見ての通り、
 gcc を使って test.c を a.exe にビルドして、gdb を使ってデバッグする
というだけのシンプルな構成です。

既存のプロジェクト全体をデバッグするものでは無いけど、軽量だしIntelliSenceも使えるし、
ちょっと机上じゃ面倒な確認をしたい時とか、関数の単体試験などにも使えて便利。

とりあえず現場でも使ってるC環境の手順が整ったので
今度は別の言語も使えるように整備していこう。

※VS Codeは結構な頻度でバージョンアップを繰り返しており
 記事の内容(ver.1.28.2)と 最新のVS Codeとでは、手順や表示が若干異なるかも知れません。

※ちなみに「用意したcソースの日本語が文字化けするよー」という時は
 画面下の文字コード選択からポチポチと選べば直せます。
 

0 件のコメント:

コメントを投稿