はじめに
前回ではVS CodeでC/C++プログラムをデバッグする機能をためした。 今回はPythonのプログラムのデバッグを試してみる。
ベースの環境は前回のものを使用する。
pythonプログラム
poetry
pythonのパッケージを作成するには自前でsetup.pyなどを書く必要があるが、 python初心者からするととても分かりづらいし面倒くさい。
Rustのcargoのように簡単にプロジェクトを作成するためのツールとしてpoetryというものがある。
Yocto Projectのdevtoolやrecipetoolはpoetryで作成したプロジェクトからレシピを生成できるため今回はpoetryを使用する。
下記のコマンドでインストールする。
$ pip3 install --user poetry
プロジェクトの作成
looptest
という名前でプロジェクトを作成する。
$ poetry new looptest $ cd looptest
pyproject.tomlにpackages
の行(7行目)を追加する。
1 [tool.poetry] 2 name = "looptest" 3 version = "0.1.0" 4 description = "test program" 5 authors = ["Yusuke Mitsuki <mickey.happygolucky@gmail.com>"] 6 readme = "README.md" 7 packages = [{include = "looptest"}] 8 9 [tool.poetry.dependencies] 10 python = "^3.10" 11 12 13 [build-system] 14 requires = ["poetry-core"] 15 build-backend = "poetry.core.masonry.api"
プログラムの作成
looptest/main.py
を作成
for i in range(10): if i % 2 == 0: print(i, "is even") else: print(i, "is odd")
gitリポジトリの作成
devtoolを使用する上ではgitリポジトリにするほうが都合が良いので、gitリポジトリにする。
$ git init $ git branch -m $ git add . $ git commit -m 'initial'
ベアリポジトリの作成
$ sudo mkdir -p /opt/repos/looptest.git $ sudo chmod 777 /opt/repos/looptest.git $ cd /opt/repos/looptest.git $ git init --bare --shared
プロジェクトをpush。今回はlocalhostにしているが、sshで接続できればリモートのURLを設定しても良い。 自作のプログラムをリモートリポジトリとして扱うにはこの方法が簡単。
$ git remote add example ssh://localhost:/opt/repos/looptest.git $ git push example main
VS Codeによるデバッグ
レシピ作成
VS Codeでデバッグするためにレシピをworkspaceに展開する。
$ devtool add ssh://localhost:/opt/repos/looptest.git -B main
devtoolがPythonのプログラムと認識すると作成されるレシピ名のプリフィックスにpython3-
が自動的に付与されるため、
レシピ名は「python3-looptest」となる。
VS Codeの設定ファイル
$ devtool ide-sdk python3-looptest core-image-base --target root@192.168.7.2
デバッグ
VS Codeでプロジェクトを開く
$ code workspace/sources/python3-looptest
VS Codeでデバッグ開始の操作をすると、Pythonスクリプトもリモートデバッグすることができる。
まとめ
PythonのプログラムについてもVS Codeと連携してリモートデバッグが実行できる。
下記の流れの操作がシームレスに行えるためデバッグの効率はかなり上がるのではないだろうか。
scarthgapになって、devtoolを積極的に使用する理由ができたような気がする。