タイトルの通りです。
手順をメモっておきます。
検証した環境はRaspberryPi4Bです。
概略
CMakeとかは使わずに、Makefileだけを使います。
概略としては以下の通りです。
- Makefileでデバッグ情報付与オプションを指定する
- launch.json の "program"に、実行可能ファイルのパスを設定する
下準備する
- ソースコード一式とMakefileをまとめるディレクトリを作る
例: ~/develop/hello - そのディレクトリに.vscodeディレクトリを作る
- そのディレクトリにソースコード一式とMakefileを入れておく
- vscodeを起動する
$ mkdir ~/develop/hello
$ cd ~/develop/hello
$ mkdir .vscode
$ code ./
コードとMakefileを書く(.cとか.cppとか)
例として foo.c bar.c をファイル名とします。内容はなんでもいいです。
CC = gcc
OBJECTS = foo.o bar.o
#debugターゲット指定時に、デバッグシンボル付与および最適化なしオプション
debug: CFLAGS= -g -O0
.PHONY: clean debug
hello : $(OBJECTS)
gcc -o hello $(OBJECTS)
debug : $(OBJECTS)
gcc -o hello $(OBJECTS)
clean:
rm $(OBJECTS) hello
一旦makeしてビルドできることを確認する
$ make
デバッグシンボルを付与してmakeする
$ make debug
VSCodeでデバッグを始めるための操作をする
- VSCodeのメニュー Run -> Start Debugging (実行->デバッグを開始する)を選択する
- "launch.json が見つからない"とか、デバッグを開始できない旨のメッセージが表示される
- そのメッセージに含まれている【launch.json を作成する】旨の選択肢を選ぶ
- エディタに launch.json の内容が表示される
launch.jsonを編集する
launch.json の中にある設定項目"program"の横に、デバッグ対象のプログラムの実行可能ファイルのパスを設定する。そのほかの項目はとくに設定する必要はなさそう。
今回生成する実行可能ファイルの名前は"hello"としています。
launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "C/C++ Runner: Debug Session",
"type": "cppdbg",
"request": "launch",
"args": [],
"stopAtEntry": false,
"externalConsole": false,
"cwd": "/home/pi/develop/hello/",
//=====↓↓↓この部分を変更する↓↓↓=====
"program": "/home/pi/develop/hello/hello",
//=====↑↑↑この部分を変更する↑↑↑=====
"MIMode": "gdb",
"miDebuggerPath": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
気を取り直して、もう一回デバッグを開始する
- VSCodeのメニュー Run -> Start Debugging (実行->デバッグを開始する)を選択する
- 今度はデバッグが開始される
- VSCode右下の"DEBUG"タブにデバッグの進行状況が表示される
- "TERMINAL"タブで標準入出力の確認ができる
これで、ブレークポイントの設定とか、変数のウォッチとかもできているはず。
以上